Conflux 进阶课 在这里,Conflux 团队成员将敞开心扉,权威解析 Conflux 网络最新进展、生态构建进程等信息,没有八卦、没有小道消息,绝对干货、绝对知无不言,想要 360° 无死角了解 Conflux,来这里就够了! 将EVM字节码移植到Conflux上 Conflux 采用了存储押金机制。执行智能合约时,如果通过SSTORE (0x55)指令往存储中写入非零数据的时候,则需要支付存储押金。当这段数据被清空时,存储押金会被退还给支付者。 存储押金的价格是 1/1024 CFX/byte。每个存储单元计 64 字节。除此之外,合约创建后,代码也要收存储押金。 存储押金机制产生的区别 Conflux 采用了存储押金机制。执行智能合约时,如果通过?SSTORE (0x55)?指令往存储中写入非零数据的时候,则需要支付存储押金。当这段数据被清空时,存储押金会被退还给支付者。 存储押金的价格是 1/1024 CFX/byte。每个存储单元计 64 字节。除此之外,合约创建后,代码也要收存储押金。 交易的存储上限域 在 Conflux 中,每个交易需要填写存储上限,单位是字节。如果存储上限填写的过高,超过了账户余额所能支付的存储押金,交易就会失败。如果存储上限填写过低,导致交易执行结束时实际新增的存储超过了存储上限,交易也会失败。 一个最简单的方案是,通过 Conflux RPC 估算(详见相关章节)交易需要的存储上限。或者,可以通过n*1024的公式计算账户余额最高支持的存储上限。(其中n为支付了交易费和账户转账费用后的余额。为了保险起见,也可以填一个小一点的数,如n*1000) 写存储消耗的燃料 量就可以了。在 Conflux 中,所有SSTORE (0x55)指令消耗的燃料都是 5000 gas。相比较,以太坊在这里的逻辑很复杂。不过,一般开发者不需要关心每个指令的具体 gas 定价,只需要通过 RPC 估计整个交易的燃料用量就可以了。 共识机制产生的区别 区块高度和区块哈希相关的指令 在以太坊中,BLOCKHASH (0x40)指令 (Solidity 中的block.blockhash(n)函数) 接受区块编号(区块高度)n作为输入,输出区块高度对应的哈希值。其中参数高度n与交易执行时所在区块高度相差不可以超过 256,否则会返回 0。 Conflux 采用了树图结构,当区块排序后,每一个区块会产生一个排序编号,这个排序编号不同于区块高度。因为树图结构排序后,相邻的两个区块可能没有父子关系,所以编号为n-1的区块不一定是编号为n区块的父亲区块。 Conflux 中BLOCKHASH (0x40)指令 (Solidity 中的block.blockhash(n)函数)接受区块排序编号n作为输入。相应的,NUMBER (0x43)指令(Solidity 中的block.number变量)得到的也是排序编号。 此外,以太坊的BLOCKHASH (0x40)指令可以询问交易所在区块前 256 个区块的哈希值,而 Conflux 的指令只能询问前一个区块的哈希值。但是,Conflux 的参数数量和以太坊没有区别。 出块速度 Conflux 的出块速度是每秒 2 个块,比以太坊快很多。如果智能合约的代码逻辑里硬编码了出块速度,需要作出相应的改变。 交易中的信息填写 当用户发起一笔交易时,Conflux 所需要填写的信息有所区别。不过一般 RPC 和 SDK 会替开发者和用户做好这件事情。 Storage Limit:存储上限。详见?交易的存储上限域?小节。 Gas Limit:燃料上限。对于未用完的 gas, Conflux 最多只退还 Gas Limit 的 1/4,所以发出交易前,务必估计一个比较准的燃料上限。 Chain ID:区块链编号。规定可以执行这笔交易的区块链编号,避免有人将测试网的交易拿到主网上重放。目前,测试网的 Chain ID 是 1,主网的 Chain ID 是 2。 Epoch Height:交易执行时的(大概的)epoch。如果交易执行时实际的 Epoch 与交易填写的 Epoch Height 相差 100000 以上(Epoch 编号增长 100000 的时间在半天到几天不等),交易将执行失败。也就是说,过长时间未被打包的交易将无法执行。 Recipient:Conflux 的地址算法与以太坊有区别。所有公钥生成的地址前四个 bits 都是 0001,所有合约地址前四个 bits 都是 1000。所有内置合约地址前四个 bits 都是 0000。如果收款地址 recipient 的前四个 bits 不是这三者之一,交易执行失败。 其他区别 合约创建后,创建者(即合约创建时的msg.sender)自动成为合约的管理员。管理员有权销毁合约,或转移管理员权限给他人。管理员可以是普通地址,也可以是合约地址。 Conflux 创建的合约代码上限是 49152 字节,比以太坊多一倍。 请检查自己的合约里有没有硬编码以太坊的相关地址。 Conflux 中还有一些其他的区别,是合约的开发者与使用者不需要关心的,这里我们略去。 —- 编译者/作者:Conflux中文社区 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
Conflux进阶课丨Conflux的CVM和EVM虚拟机层的主要区别
2020-09-22 Conflux中文社区 来源:区块链网络
LOADING...
相关阅读:
- 币安区块 101 丨如何打造基于信用的 DeFi 跨链平台?2020-09-22
- BNC公链预言机(BOM)—区块链中的“战斗机”正式上线2020-09-22
- 9/22 精准布局 以太坊多单完美斩获13个点位 就是这么给力 欢迎来扰2020-09-22
- 比特币和以太坊行情分析2020-09-22
- Alokex抓住超级风口在币圈行业中大放异彩回馈给用户及代理最好的福利2020-09-22