区块链读书笔记04 - 以太坊

以太坊(Ethereum)

以太坊是一个去中心化平台,可以在其上运行使用智能合约编写的DApp(DApp可以由一个或多个智能合约构建。以太坊智能合约是在以太坊上运行的程序,可以使用Solidity语言编写。智能合约完全按照程序运行,杜绝了停机、中心化操控、欺诈和第三方干涉的可能性。)

使用以太坊运行智能合约的主要优点是方便智能合约彼此交互,而且不需要担心整合共识协议等事情,只需编写应用所需逻辑即可。

以太坊内置了一种加密货币——以太币(ether)。部署智能合约或者执行智能合约函数需要用到以太币。

和任何其他DApp一样,智能合约可以有多个实例,且每个实例都有自己专门的地址。用户账户和智能合约都可以持有以太币。

以太坊使用区块链数据结构和工作量证明共识协议。智能合约可以通过发送交易调用或者其他合约调用。

以太坊关键概念

账户(Account)

  • 外部账户(Externally Owned Accounts,EOA)
    一般意义上的用户账户,用户在创建账户时自动生成公私钥对,编码存放在Keyfile中,私钥使用用户口令加密,公钥哈希值截取后20位作为账户地址
  • 合约账户(Contract Accounts)
    保存在以太坊区块链上,是合约代码(功能)和数据(状态)的集合。合约账户通过外部账户或既存合约账户进行部署和操作控制。在部署合约二进制代码时由以太坊虚拟机(EVM)基于创建者账户地址、创建者交易nonce生成账户地址。账户地址生成过程如下图所示。
    以太坊账户

交易(Transaction)

以太坊的交易是外部账户发往其他账户(外部账户或合约账户)报文结构体,只要包括接收者地址(0地址代表新建合约实例)、发送者签名、发送金额、数据域(若接收方为合约账户)、Gas上限和Gas价格。

消息(Messsage)

以太坊的消息是合约账户发往其他账户(外部账户或合约账户)报文结构体,主要包括消息发送者、消息接受者地址、发送金额、数据域(若接收方为合约账户)和Gas上限。

Gas

由于以太坊为公有链设计,为了避免恶意程序无代价发动Dos攻击或滥用以太坊网络,参考比特币引入了经济概念,所有在以太坊EVM上的操作和存储消耗都需要Gas。

交易发送者设定Gas上限和Gas价格作为矿工打包费用。如果费用过低,矿工可以选择不打包交易到区块。

合约在执行过程中,如果当前代码执行以及子消息产生的代码执行发生的所有Gas消耗超过Gas上限,矿工依然可以获得打包费用,但是当前交易的所有状态都会被回滚。如果未出现Gas耗尽(gas overrun),交易成功执行,所有未消耗的Ether(以太币)依然会返回发送者账户。

矿工挖矿获得Ether,合约执行消耗Ether,形成天然的供求关系。Gas只与程序逻辑处理复杂度有关,将其与市场波动相关的Ether价格隔离开,通过发送者设定Gas Price的方式,可以对抗通货紧缩/膨胀。

合约(contract)

以太坊的合约即为合约账户,是以EVM字节码形式存储的代码(功能)和数据(状态)的集合体。它们以Patricia树组织,存储在区块链的账户地址上,账户可以相互发送交易或消息事件,在Gas上限内进行一次交易的图灵完备运算。交易发送者支付实际消耗Gas * 指定GasPrice的Ether给矿工作为费用,将此交易和结果打包

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值