主页 > imtoken最新版客户端 > 区块链100讲:开发者视角速读以太坊白皮书
区块链100讲:开发者视角速读以太坊白皮书
原文链接:
添加微信baobaotalk_com,加入技术布道群
最近有个以太坊项目急需充值。 个人一直认为直接从上层开发会比较混乱。 从底层原理入手可能比较枯燥,但是对于学习和理解来说非常重要。 基础不扎实,永远走不远。
因此,本文将从开发者的角度出发,快速解读以太坊的白皮书,并对技术点进行提炼,以期快速切入关键技术点,从而在实际中少走很多弯路。发展。 完整的以太坊白皮书见官方wiki:。 本文并非旨在普及区块链概念,因此需要读者具备一定的区块链基本概念。
1个
以太坊账户
以太坊通过账户传递价值来完成状态转换。 以太币(Ether)是以太坊内部的主要加密燃料,用于支付交易手续费(交易手续费的计算方法将在后面介绍)。 以太坊账户由四部分组成:
以太坊中有两种账户:外部拥有账户(由私钥控制)和合约账户(由合约代码控制)。 交易通过发送消息触发,发送到合约账户后,执行合约内部代码。 合约可以读取和写入内部存储、发送消息或创建其他合约。
TIPS:关于以太坊钱包的备份:
2个
以太坊新闻和交易
以太坊交易由外部储户发送签名消息触发。 一笔交易包含消息的接收者、确认发送者的签名、以太账户余额、要发送的数据,以及两个名为 STARTGAS 和 GASPRICE 的值。 STARTGAS为最大消耗GAS限额,GASPRICE为每一步缺勤支付费用。 当STARTGAS耗尽时,所有状态变化都会恢复到原来的状态,但交易费(GAS)不会退还。 如果还有剩余的GAS,剩余的GAS会返还给发送者的账户。
以太坊交易将账户价值从发送方转移到接收方。 如果接收方账户不存在,则创建目标账户。 如果接收账户是合约账户,则合约代码会一直执行到执行完毕或者GAS耗尽。
3个
交易费用的计算
首先,GAS的价格不是一成不变的,其价格和交易过程类似于股票交易的过程。 目前的行情可以在很多地方查看,比如这里:
交易时,您可以自行设置GASPRICE。 就像股票交易一样,如果你的手续费太低,你会很长时间得不到交易确认,如果要价太高,你就会赔钱。 因此,有必要对交易手续费进行合理的评估。
估算消耗的GAS可以调用web3提供的估算方法estimateGas。
目前提供一个简单的gas消耗表供参考,鼓励设计更高效的智能合约以减少gas浪费:
step 1 为一个执行周期支付的默认gas量。
停止 0 没有为 SUICIDE 操作支付任何费用。
sha3 20 为 SHA3 运算付费。
sload 20 为 SLOAD 操作付费。
sstore 100 为正常的 SSTORE 操作付费(有时加倍或免除)。
balance 20 为 BALANCE 操作支付
create 100 为 CREATE 操作付费
call 20 为 CALL 操作付费。
memory 1 扩展内存时,每增加一个字就付费
txdata 5 为交易的每个数据或代码字节付费
transaction 500 每笔交易支付
4个
关于智能合约
目前以太坊的智能合约是用Solidity语言编写,编译成字节码部署在以太坊中,通过EVM执行。 部署合约的过程与创建账户的过程基本相似。 部署成功后会返回合约的地址,需要记录下来,以备日后调用。
合约也有生命周期,可以调用kill方法销毁合约。 注意这里的销毁只是将合约地址标记为僵尸地址,访问僵尸地址会报错。 合约本身仍然存储在区块链上有余额的以太坊私钥,因此无法抹去痕迹。
5个
关于发行硬币
以太坊允许发行自己的代币,这些代币也是以太坊内置的数字资产,通过智能合约发行和控制。 符合ERC20标准的代币将直接兼容以太坊有余额的以太坊私钥,因此鼓励代币系统尽可能兼容ERC20标准:
发行代币的过程本质上就是执行智能合约的过程,所以也需要消耗GAS让矿工根据智能合约的执行过程进行确认。
--- 在线课程推荐 ---