1703875946
区块链项目开发指南 2.1 以太坊概览
1703875947
1703875948
以太坊(Ethereum)是一个去中心化的平台,可以在其上部署DApp。DApp是用一个或者更多个智能合约创建的,使用Solidity编程语言编写智能合约。智能合约完全按照程序运行,而且防停机、防审查、防欺诈、防第三方干扰。在以太坊中,编写智能合约可以使用好几种编程语言,包括Solidity、LLL和Serpent,其中Solidity最受欢迎。以太坊有一种内部货币叫作以太币(Ether),部署智能合约或者调用其方法需要用到以太币。和任何其他DApp一样,智能合约可以有多个实例,且每个实例都有自己专门的地址。用户账户和智能合约都可以持有以太币。
1703875949
1703875950
以太坊使用区块链数据结构和工作量证明共识协议。智能合约可以通过发送交易调用或者通过其他合约调用。有两种网络中的节点:普通节点和矿工。普通节点只备份区块链上的数据,而矿工通过挖矿创建区块链。
1703875951
1703875952
1703875953
1703875954
1703875956
区块链项目开发指南 2.2 以太坊账户
1703875957
1703875958
要创建以太坊账户,只需要一个非对称加密密钥对——由不同的算法(例如RSA、ECC等)生成。以太坊使用椭圆曲线加密算法(ECC),ECC有多个参数用来调节速度和安全性,以太坊使用secp256k1参数。深入学习ECC及其参数需要一定的数学知识,而使用以太坊创建DApp不需要深入理解ECC及其参数。
1703875959
1703875960
以太坊使用256位加密。以太坊私钥/公钥是一个256位数。因为处理器不能表示这么大的数,所以它被编译成长度为64的十六进制字符串。
1703875961
1703875962
每个账户用一个地址表示。有了密钥之后,就需要生成地址。从公钥生成地址的过程如下:
1703875963
1703875964
1)生成公钥的keccak-256哈希。它将给出一个256位的数字。
1703875965
1703875966
2)丢弃前面的96位,即12字节。现在得到160位二进制数据,即20字节。
1703875967
1703875968
3)把地址编译成十六进制的字符串。最后将得到一个40字符的字节串,就是账户地址。
1703875969
1703875970
现在任何人都可以发送以太币到这个地址。
1703875971
1703875972
1703875973
1703875974
1703875976
区块链项目开发指南 2.3 交易
1703875977
1703875978
交易是一个签名数据包,用于从一个账户向另一个账户或者向一个合约转以太币、调用合约方法或者部署一个新合约。交易使用椭圆曲线数字签名算法(ECDSA)签名,ECDSA是一种基于ECC的数字签名算法。交易包含信息接收者、识别发起人及其意愿的签名、要转账的以太币数量、交易执行允许进行的计算资源最大值(叫作gas上限)以及交易发起人愿意为单位计算资源支付的费用(叫作gas价格)。如果交易目的是调用合约方法,则还包含输入数据;如果其目的是部署合约,则可以包含初始化代码。用交易所消耗的gas乘以gas价格计算得到交易费。为了发送以太币或者执行合约方法,需要向网络广播交易。发起人需要用私钥签署交易。
1703875979
1703875980
1703875981
如果确定交易将永久地出现在区块链中,则称为交易已确认。推荐在假设交易已确认之前,等待15个确认(15个区块产生在交易所在的区块后面)。
1703875982
1703875983
1703875984
1703875985
1703875987
区块链项目开发指南 2.4 共识
1703875988
1703875989
以太坊网络中的每个节点包含区块链的一个备份。用户需要确保节点不能够篡改区块链,还需要一个机制检查区块是否合法,如果遇到两个不同的合法区块链,需要有办法确定选择哪个。
1703875990
1703875991
以太坊使用工作量证明共识协议防止区块链被篡改。工作量证明系统需要解决一个复杂问题以创建一个新的区块。解决问题需要大量算力,这就使创建区块很困难了。在工作量证明系统中,创建区块的过程称为挖矿。矿工(miner)是网络中挖区块的节点。使用工作量证明的所有DApp并不一定都使用同样的算法。使用什么算法取决于矿工需要解决的问题、问题难度值、需要多长时间解决等。我们将学习与以太坊有关的工作量证明。
1703875992
1703875993
任何人都可以成为网络中的矿工。每个矿工独自解决问题,第一个解决问题的矿工是胜利者,它得到的回报是5个以太币和该区块中全部交易的交易费。如果你的处理器比网络中的其他节点更强大,也并不意味着你总会成功,因为所有矿工要解决的问题的参数并不完全相同。但是如果你有一台比网络中的其他节点都强大的处理器,成功的概率会比较大。网络安全不是用矿工总数衡量的,而是用网络的全部算力衡量的。
1703875994
[
上一页 ]
[ :1.703875945e+09 ]
[
下一页 ]