打字猴:1.703875955e+09
1703875955 区块链项目开发指南 [:1703875269]
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
1703875975 区块链项目开发指南 [:1703875270]
1703875976 区块链项目开发指南 2.3 交易
1703875977
1703875978 交易是一个签名数据包,用于从一个账户向另一个账户或者向一个合约转以太币、调用合约方法或者部署一个新合约。交易使用椭圆曲线数字签名算法(ECDSA)签名,ECDSA是一种基于ECC的数字签名算法。交易包含信息接收者、识别发起人及其意愿的签名、要转账的以太币数量、交易执行允许进行的计算资源最大值(叫作gas上限)以及交易发起人愿意为单位计算资源支付的费用(叫作gas价格)。如果交易目的是调用合约方法,则还包含输入数据;如果其目的是部署合约,则可以包含初始化代码。用交易所消耗的gas乘以gas价格计算得到交易费。为了发送以太币或者执行合约方法,需要向网络广播交易。发起人需要用私钥签署交易。
1703875979
1703875980
1703875981 如果确定交易将永久地出现在区块链中,则称为交易已确认。推荐在假设交易已确认之前,等待15个确认(15个区块产生在交易所在的区块后面)。
1703875982
1703875983
1703875984
1703875985
1703875986 区块链项目开发指南 [:1703875271]
1703875987 区块链项目开发指南 2.4 共识
1703875988
1703875989 以太坊网络中的每个节点包含区块链的一个备份。用户需要确保节点不能够篡改区块链,还需要一个机制检查区块是否合法,如果遇到两个不同的合法区块链,需要有办法确定选择哪个。
1703875990
1703875991 以太坊使用工作量证明共识协议防止区块链被篡改。工作量证明系统需要解决一个复杂问题以创建一个新的区块。解决问题需要大量算力,这就使创建区块很困难了。在工作量证明系统中,创建区块的过程称为挖矿。矿工(miner)是网络中挖区块的节点。使用工作量证明的所有DApp并不一定都使用同样的算法。使用什么算法取决于矿工需要解决的问题、问题难度值、需要多长时间解决等。我们将学习与以太坊有关的工作量证明。
1703875992
1703875993 任何人都可以成为网络中的矿工。每个矿工独自解决问题,第一个解决问题的矿工是胜利者,它得到的回报是5个以太币和该区块中全部交易的交易费。如果你的处理器比网络中的其他节点更强大,也并不意味着你总会成功,因为所有矿工要解决的问题的参数并不完全相同。但是如果你有一台比网络中的其他节点都强大的处理器,成功的概率会比较大。网络安全不是用矿工总数衡量的,而是用网络的全部算力衡量的。
1703875994
1703875995 区块链中有多少个区块没有限制,可以生成的以太币总数也没有限制。矿工一旦成功挖到区块,就向网络中的所有其他节点广播该区块。区块有一个区块头(header)和一系列交易。每一个区块存储前一个区块的哈希值,由此创建一个相连的链。
1703875996
1703875997 让我们来看矿工需要解决的问题是什么以及如何在高水平解决问题。为了挖区块,矿工首先从收到的广播中收集新的、未挖出的交易,然后滤掉不合法的交易。合法的交易必须满足正确地使用私钥签名、账户有足够的余额进行交易等条件。现在矿工创建一个有区块头和内容的区块。内容(content)是区块包含的交易列表。区块头包含前一个区块的哈希、区块序号、随机数(nonce)、目标值(target)、时间戳(timestamp)、难度值(difficulty)、矿工地址(address)等内容。时间戳表示区块初始时间。随机数是一个没有意义的值,纯粹是为了设置一个小于或等于目标值的区块哈希。以太坊使用ethash哈希算法。发现随机数的唯一方法是穷尽所有可能。目标值是一个256位的数字,根据不同的因素计算。区块头的难度值是目标值的一种不同表述方法。目标值越低,发现随机数需要的时间越多;目标值越高,需要的时间越少。计算问题难度值的公式如下:
1703875998
1703875999
1703876000
1703876001
1703876002 网络中的任何节点都可以检查区块链是否合法,首先检查交易在区块链中是否合法以及时间戳的验证情况,然后检查区块的目标值和随机数是否合法、矿工是否得到合法的回报等。
1703876003
1703876004
[ 上一页 ]  [ :1.703875955e+09 ]  [ 下一页 ]