1.智能合约
智能合约(Smart Contract)是以太坊中最为重要的一个概念,即以计算机程序的方式来缔结和运行各种合约。
以太坊支持通过图灵完备的高级语言(包括Solidity、Serpent、Viper)等来开发智能合约。
智能合约作为运行在以太坊虚拟机(Ethereum Virual Machine,EVM)中的应用,可以接受来自外部的交易请求和事件,通过触发运行提前编写好的代码逻辑,进一步生成新的交易和事件,可以进一步调用其他智能合约。
智能合约的执行结果可能对以太坊网络上的账本状态进行更新。这些修改由于经过了以太坊网络中的共识,一旦确认后无法被伪造和篡改。
2.账户
比特币:在设计中并没有账户(Account)的概念,而是采用了UTXO模型记录整个系统的状态。任何人都可以通过交易历史来推算出用户的余额信息。
以太坊:直接用账户来记录系统状态。每个账户存储余额信息、智能合约代码和内部数据存储等。
以太坊支持在不同的账户之间转移数据,以实现更为复杂的逻辑。
以太坊账户分为两种类型:合约账户(Contracts Accounts)和外部账户(Externally Owned Accounts,或EOA):
·合约账户:
存储执行的智能合约代码,只能被外部账户来调用激活;
·外部账户:
以太币拥有者账户,对应到某公钥。账户包括nonce、balance、storageRoot、codeHash等字段,由个人来控制。当合约账户被调用时,存储其中的智能合约会在矿工处的虚拟机中自动执行,并消耗一定的燃料。燃料通过外部账户中的以太币进行购买。
3.交易
交易(Transaction)在以太坊中是指从一个账户到另一个账户的消息数据。消息数据可以是以太币或者合约执行参数。以太坊采用交易作为执行操作的最小单位。
每个交易包括如下字段:
·to:目标账户地址;
·value:可以指定转移的以太币数量;·nonce:交易相关的字串;
·gasPrice:执行交易需要消耗的Gas价格;·startgas:交易消耗的最大Gas值;·signature:签名信息。
类似于比特币网络,在发送交易时,用户需要缴纳一定的交易费用,通过以太币方式进行支付和消耗。
5.燃料
燃料(Gas)控制某次交易执行指令的上限。每执行一条合约指令会消耗固定的燃料。当某个交易还未执行结束,而燃料消耗完时,合约执行终止并回滚状态。