以太坊的状态转换和客户端是什么?


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

2

为了防止代码指数爆炸和无限循环,每笔交易都需要限制由执行代码引起的计算步骤。STARTGAS就是限制,GASPRICE每一步都需要支付矿主的费用。

以太坊状态转换函数为APPLY(S,TX)->S’,可定义如下:

1、检查交易的格式是否正确,签名是否有效,以及随机数是否与发送者账户的随机数匹配。如否,返回错误。

2.计算交易费用fee=STARTGAS*GASPRICE,并从签名中确定发送人的地址。从发送人账户中减去交易费用,增加发送人的随机数量。如果账户余额不足,则返回错误。

3、设定初值Gas=STARTGAS,并根据交易中的字节数减去一定量的燃料值。

4.从发送人的账户转移到接收人的账户。如果没有接收账户,新手将创建该账户的短期货币投机操作技能。如果接收账户是合同,则操作合同代码,直到代码运行结束或燃料耗尽。

5.如果发送人账户费用不足或燃料耗尽导致价格转移失败,并恢复原状态,也需要向矿主账户支付交易费。

6.成功执行基代码,将剩余燃料返还给发送人,消耗的燃料作为交易费用发送给矿主。

例如,假设合同代码如下:

1

需要注意的是,在现实中,合同代码使用底层以太坊虚拟机EVM代码是用我们的高级语言编写的。Serpent语言可以编译成EVM代码。假设合同存储器开始时空,一个值10以太,燃料2000,燃料价格0.01以太和两个数据字段值为[2,’CHARLIE’]状态转换函数的处理过程如下:

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

2.检查交易发送者是否至少检查2万*0.001=2以太币。如有,从发送人账户中减去2个以太币;

3、初始设定Gas=假设交易长度为170字节,每字节费用为5,减去850,所以还剩1150;

4.从发送人账户中减去10个以太币,为合同账户增加10个以太币;

5.操作代码。在本合同中,操作代码非常简单:检查合同内存索引是否已使用,注意未使用,然后将其值放置为CHARLIE。假设这消耗了187单位的燃料,剩余的燃料 是1150-187=963.

6.增加发送者账户963*0.001=0.963个以太币,回到最终状态。

如果没有合同接收交易,所有交易费用都是GASPRICE*交易字节长度,交易数据与交易成本无关。此外,需要注意的是,合同发起的信息可以计算和分配燃料限额。如果子计算的燃料耗尽,当消息发出时,它只会恢复到状态。

因此,与交易一样,合同也可以通过严格限制其生产的子计算来保护其计算资源。

以太坊客户端

以太坊客户端有四种语言,以测试各种语言对以太坊的支持,让更多的人参与以太坊的开发和使用。

它们分别是

用Go实现语言客户端Geth;

用C 客户端实现Eth;

用Python实现语言客户端Pyethapp;

用Java实现客户端EthereumJ,

其中Go语言版是以太坊官方维护和推荐的客户端。

以太坊包括一个特殊的客户浏览器,允许用户运行各种分散的应用程序(DApp),发布智能合同。

这个浏览器被称为Mist,使用方便,降低了用户的使用门槛DApp大量用户可以使用智能合同。它的功能相当于浏览器在互联网或iTunes下载数字内容。Mist由与区块链相关的特殊安全层、密钥管理、分散账户管理和组件组成。

这一切使得Mist成为普通用户运营或管理区块链去中心代理应用不可缺少的工具,普通用户不需要了解技术。

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

微比特(ViaBTC)矿池简介 ViaBTC矿池怎么样
上一篇 2022年05月30日
区块链主网上线是什么意思?主网上线是什么?
下一篇 2022年06月10日
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 liqiaoqiant@qq.com 举报,一经查实,本站将立刻删除。

相关推荐