主页 > imtoken最新版官网 > 以太坊网络智能合约原理

以太坊网络智能合约原理

imtoken最新版官网 2023-11-01 05:10:13

本文约2500字+,阅读(观看)需15分钟

以太坊的图灵完备智能合约丰富了区块链从比特币单一数字资产的去中心化转移到去中心化的全球分布式计算机,虽然在以太坊网络上运行代码的成本相对较高。 与比特币脚本相比,以太坊智能合约的出现是一个比较大的进步。 在这篇文章中,我们讨论了以太坊网络上的智能合约是如何工作的。

区块链

区块链只是一个分散的分布式账本,一种由多个参与者共享的特定类型的数据库。

区块链网络中发生的所有交易都存储在账本中,每个加入网络的节点都拥有数据的完整副本。 经济激励模型弱化甚至消除了独立节点之间的信任基础,在不需要信任的开放网络中转移数字资产。

区块链世界遵循 Don't trust, verify it 的原则。

智能合约

图灵完备的智能合约使得以太坊成为继比特币之后区块链技术的最大亮点。 比特币是作为价值载体的数字资产,而以太坊则超越了数字资产的属性,为去中心化应用赋能。 智能合约是可以在区块链网络上运行的代码逻辑。

以太坊账户模型和状态模型

比特币使用 UTXO 模型,而以太坊使用账户模型。 智能合约也是以太坊中的账户。 以太坊网络只有一个全局状态,即 State trie,它经常更新。 状态树通过键值对维护所有在以太坊网络上有过交易的账户。

key是一个长度为160位的以太坊地址,value由以下四个元素使用RLP(Recursive-Length Prefix encoding method)编码而成。 每个账户都是state trie的一个节点,所有账户的state trie是一个Merkle-like tree得到根节点(State Trie — Keccak-256-bit hash of the state trie's root node store as the stateRoot价值)

下图展示了state trie和blocks的关系

sitebitkan.com 以太坊挖矿原理_以太坊挖矿原理_以太坊原理

State Trie(Merkle Patricia Trie 的 leveldb 实现)和以太坊区块之间的关系

account nonce(账户内转账成功次数)和balance(eth balance)字段都有数据,智能合约账户storageRoot(保存合约所有数据)和codeHash(保存合约代码编译字节码)都有数据以太坊原理,而普通Account这些两个字段是空的。

合约的数据存储在存储树中。 与状态树一样,存储树也有与合约中的变量名和值对应的键值对(键是存储位置,值是存储值)相同的存储格式。 这些键值对通过默克尔哈希后得到的storageRoot存储在账户中。

下图展示了storage trie和state trie的关系

以太坊挖矿原理_以太坊原理_sitebitkan.com 以太坊挖矿原理

值得强调的是,区块数据只保存了交易trie(类似于比特币中的区块头,存储了所有区块中的交易Merkle树根节点)、state trie root和receipts trie root

智能合约账户

contract Counter {
    uint counter;
   function Counter(
) public
{        counter = 0;    }    function

count() public
{        counter
   = counter + 1;    } }

简单的智能合约,uint类型的counter是合约的状态,调用count函数后,counter的值会加1

sitebitkan.com 以太坊挖矿原理_以太坊原理_以太坊挖矿原理

以太坊交易

交易信息中有一个特殊的字段数据。 该字段的值结合to字段可以将以太坊交易分为三类:

转移

新合同

调用合约

// Transfer of value{
    to: '0x687422eEA2cB73B5d3e24
2bA5456b782919AFc85'
,    value: 0.0005    data: ‘0x’ //
Could also send a message here
if we want to
}// Create smart
contract
{    to: '',    value: 0.0    data: ‘0x60606040523415610
00c57fe5b60405160c0806
……………’ }// Call contract{    to: '0x687422eEA2cB73B5d3e2
42bA5456b782919AFc85'
,
// Contract    value: 0.0    data: '0x606060405234156100
0c57fe5b60405160c0806……………'
}

值得强调的是,以太坊交易中有gas的概念,在以太坊网络上运行需要一定的成本。 同时,必须设置一个gas上限。 交易完成后以太坊原理,剩余的gas将返还。