比特币通信协议 - 币圈消息

比特币通信协议篇11、二、TURN简介。在典型的情况下,TURN客户端连接到内网中,并且通过一个或者多个NAT到 详细

以太坊中文网 什么是以太坊-以太坊开发入门指南 - 币圈消息

[复制链接]
18 0
wangjia 发表于 2022-11-3 10:59:34 | 只看该作者 |阅读模式 打印 上一主题 下一主题
什么是以太坊-以太坊开发入门指南
很多同学已经跃跃欲试加入区块链开发团队,却又觉得无从下手。本文将基于以太坊平台以流行的方式介绍以太坊开发中涉及的晦涩概念,轻松引导大家上手。
很多同学已经跃跃欲试加入区块链开发团队,却又觉得无从下手。本文将基于以太坊平台以流行的方式介绍以太坊开发中涉及的晦涩概念,轻松引导大家上手。
写在前面
在阅读本文之前,您应该对什么是区块链有一个大致的了解。如果你还不明白,欢迎订阅专栏:区块链技术
指导您从零开始学习区块链技术。
什么是以太坊
以太坊是一个基于区块链技术的去中心化应用平台。它允许任何人在平台上构建和使用通过区块链技术运行的去中心化应用程序。
对于不理解这句话的同学,我们先来了解一下,以太坊就是区块链中的安卓。它是一个开发平台,允许我们编写基于区块链技术的应用程序,如 Android 框架。
在以太坊之前,写一个区块链应用是这样的:复制一份比特币的代码,然后改变加密算法、共识机制、网络协议等底层代码(很多山寨币都是这种情况,而改变会出来。新加坡元)。
以太坊平台封装了底层区块链技术,让区块链应用开发者可以直接基于以太坊平台进行开发,只要专注于应用本身逻辑的智能合约开发,就可以大大降低开发难度。
目前围绕以太坊已经形成了最完整的开发生态:有很多经过测试验证的开发库,完整的开发者文档(很多是中文的),以及开发和测试工具。
智能合约
那么什么是智能合约呢?在以太坊网络上运行的程序称为智能合约。和其他程序一样,它也是代码和数据(状态)的集合。
智能合约(Smart Contract)与人工智能(Artificial Intelligence)的智能无关。智能合约最早由 Nick Sabo 于 1995 年提出,其概念很简单,就是将法律条文写入可执行代码。中和法律规定的执行。这个概念与程序在区块链上的执行不谋而合,不能被篡改或干扰(只有有人触发交易,才会自动执行),所以区块链引入了这个概念。
在之前的比特币脚本介绍中,我们提到比特币交易也是可以编程的,但是比特币脚本有很多限制,可以编写的程序也有限,而以太坊的程序是“图灵完备”的。,所以理论上可以让我们写出无所不能的程序。
智能合约非常适合需要高信任度、安全性和持久性的应用场景,例如:数字货币、数字资产、投票、保险、金融应用、预测市场、产权管理、物联网、点对点交易等等。
目前,除了数字货币,真正落地的应用并不多(就像刚刚起步的移动平台)。相信在1到3年内,各种杀手锏会慢慢出现。
要了解更多智能合约,您可以阅读以全面了解智能合约的运行原理。
编程语言:Solidity
智能合约的主要编程语言是 Solidity 和 Vyper。Solidity 更成熟。Solidity 合约文件的扩展名为 .sol。虽然它是一门新语言,但它与大家普遍使用的现代语言非常相似。一个简单的计数器智能合约:
pragma solidity =0.4.22 如果上面的contract 把contract 改成class,和用其他语言定义一个class 是一样的。Solidity 是一种编译语言。代码编译成以太坊虚拟机的字节码后,再部署到以太坊网络。以太坊为我们提供了很好的工具来完成这项工作。例如,Remix 是一个用于开发、编译和部署智能合约的 IDE。它也是一个基于浏览器的 Web IDE。下面是 Remix IDE 的屏幕截图。

Solidity 是一种静态类型语言,支持继承、库和复杂的用户定义类型等特性。更多关于Solidity的内容可以参考社区翻译的Solidity中文文档。
运行环境:EVM
EVM (Ethereum Virtual Machine) 以太坊虚拟机用于在以太坊上执行交易,为智能合约提供运行环境。
Solidity 之于 EVM 之于 JVM,这样大家就容易理解了。
以太坊虚拟机是一个隔离环境,运行在 EVM 内部的代码无法从外部访问。
EVM 在以太坊节点上运行。我们在以太坊网络上部署合约后以太坊中文网,合约就可以在以太坊网络上运行了。
合同编制
在以太坊虚拟机上运行的是合约的字节码形式。我们需要在部署之前编译合约。您可以选择 Remix 或 solc 编译器。
合约部署
在以太坊上开发应用程序时,经常使用以太坊客户端(钱包)。我们在开发中通常不会触及客户端或钱包的概念。它是什么?
以太坊客户端(钱包)
以太坊客户端,其实我们可以把它理解为一个开发者工具,提供账户管理、挖矿、转账、智能合约的部署和执行等功能。
EVM 由以太坊客户端提供
Geth是开发以太坊时使用的典型客户端,基于Go语言开发。Geth 提供了一个交互式命令控制台,通过它包含了以太坊的各种功能(API)。Geth的使用会在后面的文章中介绍,这里先有个概念。
Geth 控制台类似于 Chrome 浏览器开发者工具中的控制台,但 Geth 控制台运行在终端中。
如何部署
智能合约的部署是指在区块链上发布合约字节码,并使用特定地址来标记合约。该地址称为合约账户。
以太坊有两种类型的账户:
与比特币使用 UTXO 的设计不同,以太坊使用更简单的账户概念。
EVM 的两种类型的帐户是相同的。
外部账户和合约账户之间的区别和关系如下:外部账户可以通过使用自己的私钥创建和签署交易来向另一个外部账户或合约账户发送消息。
两个外部账户之间的消息传递就是价值传递的过程。但是从外部账户到合约账户的消息会激活合约账户的代码,允许它执行各种操作(例如转移代币、写入内部存储、挖掘新代币、执行一些计算、创建新合约)等)。
只有当外部账户发出指令时,合约账户才会进行相应的操作。
合约部署是将编译好的合约字节码以通过外部账户发送交易的形式部署到以太坊区块链上(实际部署只有在实际矿工出块后才能成功)。

合约部署后,当需要调用智能合约的方法时,只需要向合约账户发送一条消息(交易)即可。消息触发后,智能合约的代码将在 EVM 中执行。
气体
与云计算类似,占用区块链的资源(无论是简单的转账交易还是合约的部署和执行)也需要相应的费用(天下没有免费的午餐,对吧!)。
以太坊使用 Gas 机制进行计费。气体也可以被视为一个工作单位。智能合约越复杂(计算步骤的数量和类型、占用的内存等),完成操作所需的Gas就越多。
运行任何特定合约的合约所需的 gas 数量是固定的,并由合约的复杂性决定。
Gas 价格由执行合约的人在提交运行合约的请求时设定以太坊中文网,以确定他愿意为此交易支付多少:Gas 价格(以 Ether 计价)* Gas​​ 数量。
Gas 的目的是限制执行交易所需的工作量,同时为执行付费。EVM在执行交易时,会按照特定的规则逐渐消耗Gas,无论在哪里执行,一旦Gas耗尽就会触发异常。在当前调用帧中所做的所有状态更改都将被回滚。如果执行结束时有剩余gas,这些gas将返回到发送账户。
如果没有这个限制,就会有人写一个无法停止的合约(比如无限循环)来阻塞网络。
因此,实际上(把前面的内容串起来),我们需要一个有Ether余额的外部账户来发起交易(普通交易或部署,运行合约),并且在运行过程中,矿工收取相应的工作量费用。
以太坊网络
有焦急的同学不禁要问了,没有Eth​​er怎么开发智能合约?您可以选择以下方法:
选择以太坊官网测试网络Testnet
在测试网络中,我们可以轻松获得免费的 Ether。缺点是初始化节点需要很长时间。
使用私链
创建自己的私有以太坊测试网络,通常称为私有链。我们可以将其作为测试环境来开发、调试和测试智能合约。
通过上面提到的Geth,可以很容易地创建一个自己的测试网络。你可以挖多少以太币,不需要同步官网整个区块链数据。
使用开发者网络(模式)
与私链相比,在开发者网络(模式)中,会自动分配一个大额余额的开发者账户供我们使用。
使用模拟环境
创建测试网络的另一种方法是使用 Ganache。Ganache 是一个普通的应用程序。它使用本地内存模拟的以太坊区块链环境,开发调试更加方便快捷。Ganache 将帮助我们在启动时用资金创建 10 个测试账户。
开发合约时,可以在Ganache中测试通过后部署到Geth节点。
DApp:去中心化应用
以太坊社区将基于智能合约的应用程序称为去中心化应用程序。如果我们将区块链理解为一个不可变的数据库,将智能合约理解为与数据库交互的程序,那么 DApp 就很容易理解了。例如,一个 DApp 不仅要有智能合约(相当于应用的后台),还需要有一个友好的用户界面。
松露
Truffle 是一个非常流行的 DApp 开发框架。它可以帮助我们处理很多琐碎的事情,让我们可以快速开始编写代码-编译-部署-测试-打包DApp的过程。
总结
现在让我们总结一下。以太坊是一个平台。它允许我们使用区块链技术来开发去中心化的应用程序。在这个应用程序中,我们使用 Solidity 编写与区块链交互的智能合约。在合约写好之后,我们需要在以太坊客户端使用一个有余额的账户来部署和运行合约(使用Truffle可以更好的帮助我们做这些事情)。为了开发方便,我们可以使用Geth或者Ganache来搭建测试网络。
注:本文为了方便大家理解,有些概念是类比的,有些不是严格准确的,但我也认为对于初学者来说,没有必要非常细致准确地掌握每个概念。学习是一个循序渐进的深入学习。过程,很多时候我们会发现,经过一段时间后,我们对同一件事会有不同的理解。
看完这篇文章,你了解所有这些概念了吗?现在可以开始开发了,看看智能合约开发环境和Hello World合约
我们特意为区块链技术的学习者提供了几门课程:
极客公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:以太坊中文网 什么是以太坊-以太坊开发入门指南
喜欢 (0)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
收藏
收藏0
转播
转播
分享
分享
分享
淘帖0
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝0

帖子2930859

发布主题
阅读排行更多+

Powered by 顺水鱼MT4外汇EA网! X3.2© 2001-2017 顺水MT4外汇EA公司.( 陕ICP备17014341号-1