概念的区别:Epoch & storageLimit

以太坊区块链中只有主链上的交易是无效的,所以能够认为以太坊区块链账本是一条单链,从前往后每个区块都有一个编号,叫做区块号( block number),conflux 开发了一种全新的账本构造: 树图,实现了高吞吐,低提早。

在树图区块构造中,如果只看父边他是一个 Tree,如果父边援用边都看则是一个 Graph。正是这种构造使得 Conflux 网络能够并收回块,即多个区块能够都在某个区块之后生成。因而在 Conflux 是没有 block number 的概念。 但为了实现全序,Conflux 通过 GHAST 规定从创世区块开始,在其所有子区块中抉择最重子树 block 为 pivot block,所有的 pivot block 链到一块也造成一条链 定义为 pivot chain,如果只看 pivot chain 其跟一般的区块链构造统一,在这条链上基于每个 pivot block 定义一个Epoch,因而你能够把 conflux 中的 Epoch 了解为跟 block number 对应的概念,只不过 conflux 中的每个 epoch 中可能会有多个 block。

在事实世界中,发送转账交易须要给银行付手续费,在比特币中发送交易须要给矿工付手续费,在以太坊中同样如此。具体来讲,以太坊网络的交易最终是由矿工 运行的 EVM 执行的,gas 是用来掂量一笔交易执行的工作量(能够了解为工作的工时),交易发送者,发送交易时能够指定违心给每个工作量付的价格即 gasPrice。 因而最终一笔交易的手续费为 gas * gasPrice。 在发送一笔交易时指定的 gas 则是一个限度值,即发送方最大违心为一笔交易领取 gas 这么多的工时,如果交易须要的工作量超过 gas,则不会再付钱,交易不会被执行。

在 Dapp 零碎中,交易执行除了须要矿工进行计算付出计算资源外,还须要矿工存储合约的状态,因而须要付出存储资源。在 Conflux 零碎中发送交易时,还须要为状态存储 抵押一部分费用,因而在 conflux 中发送交易时会比以太坊多一个 storageLimit 参数,用于设置违心为某笔交易存储所抵押的费用下限。在合约开释掉应用的存储空间之后,抵押的费用 也会失去返还。

开发工具区别

Conflux区块链现有开发工具次要有 Conflux TruffleConflux Studio, 其性能次要对应以太坊应用最广的开发工具的TruffleRemix

Conflux-Truffle Vs Truffle

Conflux-Truffle 为以 Truffle 为原型革新的服务于conflux区块链的合约开发工具。 具体理解请参看Conflux-Truffle 应用教程。 其与Truffle的区别次要有以下几点。

1. 名称

项目名称npmjs 包名装置后的命令行程序名称
Conflux-Truffleconflux-trufflecfxtruffle
Truffletruffletruffle

2. Ganache VS conflux-rust docker

Ganache 为 Truffle 官网提供的用于不便开发智能合约时疾速启动以太坊私链的一个工具。

conflux临时没有Ganache对应版本,但conflux提供了conflux-docker,应用办法也很不便,启动conflux-docker默认也会启动一个私链,调配10个初始账户并调配cfx, 且会主动 unlock 这些账户。

它们的最大区别是Ganache提供了一个图形化界面能够查看公有链运行状况,及做一些简略性能交互。conflux后续会进步用户体验相干的性能。

3. subcommand

子命令Truffle是否反对Conflux-Truffle是否反对
build已过期N
compileYY
configYY
consoleYY
createYY
debugYY
deployYY
developYN
execYY
helpYY
initYY
installYY
migrateYY
networksYY
obtainYY
opcodeYY
publishYY
runYY
testYY
unboxYY
versionYY
watchYY

ctxtruffle 除了不反对子命令 cfxtruffle develop外,其余子命令名称及应用形式均与trffule统一; 后续版本中会减少该性能。

4. subcommand context

当运行cfxtruffle console/exec/run时,仍然能够通过 js-sdk 相干apiconflux 交互,同时也注入了js-conflux-sdkConfluxUtil模块,能够通过 cfxcfxutil 应用。 如下所示

# cfxcfxtruffle(development)> await cfx.getBalance('0x148A9696F8DCf4d6cB01eC80F1047a3476bA5C56')cfxtruffle(development)> await cfx.getNextNonce("0xbbd9e9be525ab967e633bcdaeac8bd5723ed4d6b")# cfxutilcfxtruffle(development)> let drip = cfxutil.unit.fromCFXToGDrip(0.1)cfxtruffle(development)> let randomKey = cfxutil.sign.randomPrivateKey()

5. 本地签名近程部署

truffle中能够通过设置HDWalletProvider来调用本地钱包进行签名,cfxtruffle只须要在网络配置中设置 privateKeys 字段即可,该字段是一个私钥数组,当发送交易或部署合约时会主动从改 privateKeys 列表中选取对应的私钥进行签名。示例如下

Truffle设置

// truffle-config.jstestnet: {    provider: new HDWalletProvider("3f841bf589fdf83a521e55d51afddc34fa65351161eead24f064855fc29c9580", "http://localhost:7545"),            network_id: "*",           // 留神:从 portal 获取的私钥须要增加 0x 前缀,privateKeys 也能够指定单个 key,若配置了私钥,请留神不要将代码上传到公开代码仓储中。    // privateKeys: ['your-private-key']  }

Conflux-Trffle 设置

// truffle-config.jstestnet: {    host: "test.confluxrpc.org",    port: 80,                network_id: "*",           // 留神:从 portal 获取的私钥须要增加 0x 前缀,privateKeys 也能够指定单个 key,若配置了私钥,请留神不要将代码上传到公开代码仓储中。    // privateKeys: ['your-private-key']      privateKeys: ['0x3f841bf589fdf83a521e55d51afddc34fa65351161eead24f064855fc29c9583','0x4f841bf589fdf83a521e55d51afddc34fa65351161eead24f064855fc29c9581']}

6. 调用rpc时的参数

如前文所示,因为conflux中的共识形式与以太坊不同,减少了epoch及storageLimit的概念,所以在通过rpc与conflux交互时常常须要传这些参数,具体不同请参见rpc及sdk区别

Conflux Studio VS Remix

Conflux Studio 是一个帮忙开发者疾速开发 Conflux 智能合约的集成化开发环境。其与Remix相似提供了图形界面让开发者与合约交互。
Remix是基于浏览器端的应用程序,而Conflux Studio 是一个独立的可执行程序,除了程序类型区别外,其性能及应用形式上也有很多区别

性能RemixConflux Studio
编辑合约YY
调试合约代码YN
合约谬误查看YN
编译及部署合约YY 在Project页面操作,外部实现为调用Conflux-Truffle编译
显示编译及部署后果UI(蕴含 ABI 及 Bytecode)YY 在ABI Storage中查看合约编译历史的ABI,
设置gaslimitYN
部署合约时设置结构函数参数YN
依据 ABI 和地址加载合约实例YN
Tuple传参YN
反对编译优化YN
反对主动编译合约YN
合约交互UIYY 在Contract页面操作
命令终端YY
在命令终端中与sdk交互命令终端中注入了web3N
连贯节点通过设置node url连贯提供Network选项卡,能够本地创立节点,也能够抉择testnet和mainnet
创立节点并治理节点YN
内置执行环境JavaScript VMYN
初始账户Accounts主动调配,或通过metamask导入手动依据keystore导入 或 通过IDE创立
反对插件装置YN
记录交易供replay(蕴含交易哈希,交易创立合约的abi)YN
Unit TestYN
导入我的项目从本地及其它源导入我的项目,如github,gist,ipfs等内置了智能合约模板, 在 Project 页面操作
账户浏览器NY 在Explorer页面地址栏中输出账户地址查看

相干资料库:

  • Conflux开发材料包
  • conflux-chain github
  • conflux-fans github