关于区块链:Conflux与以太坊合约开发工具区别

52次阅读

共计 3864 个字符,预计需要花费 10 分钟才能阅读完成。

概念的区别: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-Truffle conflux-truffle cfxtruffle
Truffle truffle truffle

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
compile Y Y
config Y Y
console Y Y
create Y Y
debug Y Y
deploy Y Y
develop Y N
exec Y Y
help Y Y
init Y Y
install Y Y
migrate Y Y
networks Y Y
obtain Y Y
opcode Y Y
publish Y Y
run Y Y
test Y Y
unbox Y Y
version Y Y
watch Y Y

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

4. subcommand context

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

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

5. 本地签名近程部署

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

Truffle设置

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

Conflux-Trffle 设置

// truffle-config.js
testnet: {
    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 是一个独立的可执行程序,除了程序类型区别外,其性能及应用形式上也有很多区别

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

相干资料库:

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

正文完
 0