2022以太坊的状态转换与“客户端”有哪些,有什么价值

当前位置:首页 > 币圈百科 > 2022以太坊的状态转换与“客户端”有哪些,有什么价值

2022以太坊的状态转换与“客户端”有哪些,有什么价值

2022-06-12币圈百科273

以太坊的状态转换是指当交易(TX)发生时,以太坊从一个正确状态(S)到下一个正确状态(S’)的转换过程。

20222

对于事务来说,为了防止代码的指数级爆炸和无限循环,每个事务都需要限制执行代码导致的计算步骤。STARTGAS是限制,GASPRICE是每个计算步骤中要支付的矿工费用的价格。

以太坊的状态转移函数是APPLY(S,TX)-S ',可以这样定义:

1。检查交易格式是否正确,签名是否有效,随机数是否与汇款人账户随机数匹配。如果没有,返回一个错误。

2。计算交易费=STARTGAS*GASPRICE,从签名确定寄件人地址。从发送方账户中减去交易成本,增加发送方随机数。如果帐户余额不足,将返回一个错误。

3。设置初始值Gas=STARTGAS,根据事务中的字节数减去一定量的燃料值。

4。将价值从发送方帐户转移到接收方帐户。如果接收帐户尚不存在,请创建此帐户。如果接收帐户是合同,运行合同的代码,直到代码用完或燃料用完。

5。如果因为发送方账户没有足够的费用或者代码执行没有燃料而导致价格转移失败,将恢复原来的状态,但交易费用将添加到矿工的账户中。

6。基码执行成功,剩余燃料全部返还给发送方。消耗的燃料作为交易费用发给矿工。

举个例子,假设一个契约的代码如下:

20221

需要注意的是,现实中契约代码是用底层以太坊虚拟机的EVM代码写的,上面的契约是用我们的高级语言Serpent写的,可以编译成EVM代码。假设契约记忆启动时空,在发送了一个值为10以太,燃料为2000,燃料价格为0.001以太,两个值为[2,'查理']的数据字段的交易后,状态转移函数的处理过程如下:

1。检查交易是否有效,格式是否正确;

2。检查交易发送方是否至少有2000*0.001=2以太坊。如果是,从发送方账户中减去2以太币;

3。初始设置Gas=2000,假设事务长度为170字节,每字节开销为5,减去850,那么还剩1150;

4。从发送方账户中减去10以太币,在合约账户中增加10以太币;

5。运行代码。在这个契约中,运行的代码很简单:它检查是否使用了契约内存索引2,注意到它没有被使用,然后将其值设置为CHARLIE。假设这要消耗187个单位的燃油,那么剩余燃油就是1150-187=2022。

6。将963*0.001=0.963以太币加到发送方账户,返回最终状态。

如果没有收到交易的合约,那么所有的交易费用都按照GASPRICE*交易的字节长度计算,交易数据与交易费用无关。此外,应该注意,由契约发起的消息可以将燃料限制分配给由它们生成的计算。如果子计算的燃料耗尽,它将只恢复到发送消息时的状态。

因此,就像交易一样,契约也可以通过对其产生的子计算设置严格的限制来保护其计算资源。

以太坊客户端

为了测试各种语言对以太坊的支持,让更多人参与到以太坊的开发和使用中,目前有四种语言编写的以太坊客户端。

[他们是]

客户端Geth用Go语言实现;

客户端Eth在C中实现;用Python语言实现的

client Pyethapp;

用Java实现的客户端EthereumJ,

其中Go语言版本是以太坊一直维护并推荐使用的客户端。

以太坊包括一个专用的客户端浏览器,使用户能够运行各种分散的应用程序(DApp)和发布智能合同。

这款名为Mist的浏览器易于使用,降低了用户的门槛,从而使DApp和智能合约能够被大量用户使用。 它的功能相当于互联网的浏览器或数字内容下载的iTunes。Mist由特殊安全层、密钥管理、分散账户管理和区块链相关组件组成。

所有这些使得Mist成为普通用户运行或管理区块链去中心化应用程序不可或缺的工具。普通用户不需要了解技术方面。

从用户体验2022的角度来看,可以使用Mist中的DApp(如预测市2022蓑衣网小编场Augur)在以太坊Mist浏览器中运行。当然,这些服务也可以通过传统浏览器以更传统的Web 2.0方式实现。

2022以太坊的状态转换与“客户端”有哪些,有什么价值 | 分享给朋友: