Conflux开发教程:使用IDE开发DApp的实战操作指南-ODAILY_CON:FLUX

一、简介

ConfluxStudio是一个帮助开发者快速开发Conflux智能合约的集成化开发环境。ConfluxDApp开发教程将使用ConfluxStudio在Oceanus网络下开发一个简单的代币应用Coin。

通过这个开发教程,你将会学习到如何进行Conflux智能合约的编写、调用,配置智能合约的代付以及如何使用Web前端项目与智能合约进行交互,从而实现一个包含前端和智能合约的完整的DApp。

二、准备工作

2.1安装IDE

请在GitHub的下载页面

(github.com/ObsidianLabs/ConfluxStudio/releases)下载ConfluxStudio。目前ConfluxStudio支持macOS和Linux系统,请根据系统下载对应的版本。

正确安装ConfluxStudio并初次启动后,ConfluxStudio将显示欢迎页面,根据提示完成Docker,ConfluxNode以及ConfluxTruffle的下载、安装及启动。

2.2创建钱包

完成所有的安装步骤后,首先需要创建钥匙对来完成后续的合约部署以及调用。

在ConfluxStudio的任意界面,点击应用左下?的钥匙图标,打开密钥管理器。点击Create按钮打开新钥匙对弹窗,输入钥匙对的名字并点击Save按钮。完成后将在密钥管理器中看到刚刚生成的钥匙对的地址。钥匙对由私钥和公钥组成,公钥在智能合约中也常被称作地址。

导出私钥可以通过点击每个地址后面的眼睛按钮打开查看私钥弹窗,弹窗显示地址以及私钥。后续教程中会需要通过管理器导出私钥。

为了顺利完成教程,首先需要创建三个钥匙对:

·minter_key用于Coin合约部署时的签名,是这个教程中最常使用的钥匙对

·receiver_key用于Coin合约接收转账,将在后文中介绍转账时用到

·sponsor_key用于Coin合约代付功能,将在后文中介绍代付功能时用到

2.3连接Conflux网络

教程将在Oceanus网络进行合约的部署以及合约的调用。点击顶部Network标签的倒三角打开下拉菜单,点击选择Oceanus网络进行切换。

切换完成后,可以在主页面中看到当前网络为oceanus。页面左边包括了当前网络的节点URL,ChainID,TPS信息,页面右边包含了当前网络区块的信息。

2.4申请测试CFX

点击顶部Explorer标签打开区块浏览器,并在地址栏粘贴钥匙对地址,可以在左边看到当前地址的CFX余额信息。

中国电信将与Conflux Network合作在香港试行支持区块链的SIM卡:金色财经报道,Conflux Network 宣布将与中国电信合作于今年晚些时候在香港推出首个 BSIM 试点项目。据悉,BSIM 卡集成了 Conflux 的树图、双重权益证明和工作量证明技术,可为世界上任何区块链实现最高的系统性能。Conflux 希望该行为可以降低用户进入 Web3 和 Metaverse 的门槛。[2023/2/15 12:08:45]

在区块链的世界中,大家通常将申请测试Token的方式称为faucet,目前在Oceanus网络下每次faucet申请到的Token为100CFX。

获取CFX的方式有两种方式:

·输入地址后点击地址栏右边的水龙头按钮,ConfluxStudio将为地址自动申请CFX;

·你也可以直接在浏览器中输入wallet.confluxscan.io/faucet/dev/ask?address={address}来申请CFX;

使用上述方法在ConfluxStudio中为minter_key和sponsor_key申请CFXToken。完成申请后,这两个账户上的余额将会从0CFX更新为100CFX。

目前余额信息为:

·minter_key余额100CFX

·receiver_key余额0CFX

·sponsor_key余额100CFX

三、智能合约创建项目

3.1创建项目

点击顶部左边的Project标签切换至项目列表页面,点击页面中的New按钮打开项目创建窗口,输入项目的名称并选择coin模版,点击CreateProject完成项目的创建。

3.2合约代码

Coin合约是一个简单的代币合约,其中:

·通过mint方法可以增发代币数量

·通过send方法可以将一定数量的代币转账给别的用户,同时会在事件中记录下这笔转账的信息

·通过balanceOf方法可以查询到指定账户地址的代币余额

·通过add_privilege方法可以为合约添加代付白名单

·通过remove_privilege方法可以为合约移除代付白名单

Conflux智能合约使用Solidity语言进行开发,打开目录下的contracts/Coin.sol文件,这个是本项目的核心代码:

动态 | ConsenSys首席战略官即将辞职并创立新风险基金:金色财经报道,ConsenSys首席战略官Sam Cassatt即将辞职,他将在ConsenSys创始人Joe Lubin的支持下推出新的风险基金Aligned Capital。 Cassatt将以顾问身份留在以太坊风险工作室。[2019/11/16]

3.3编译及部署合约点击工具栏的Build按钮进行合约的编译,编译的结果将会保存在build/Coin.json文件中。

在部署合约前,首先需要确认在Explorer中选择合约部署所使用的地址,ConfluxStudio会使用这个地址将部署合约这笔交易进行签名。在合约代码的constructor中,minter被赋值为msg.sender,这个msg.sender就是Explorer所选择的地址。

在此我们选择minter_key作为部署合约的签名者。

点击工具栏的部署按钮进行部署,部署完成后,部署结果会在deploys的JSON文件中,在这个文件中可以在contractCreated中找到当前合约部署的地址,后文中使用contract_addr来代表这个合约地址。

四、调用合约

点击顶部的Contract标签切换至合约页面,在地址栏输入contract_addr地址并加载合约。

合约页面由三个部分组成:

·左边为合约调用区域

·中间为合约数据查询区域

·右边为事件查询区域

4.1合约调用及查询

4.1.1增发代币

点击合约调用的下拉菜单中选择mint方法,在下方的参数区域分别填入以下信息:

·receiver接收代币的地址。填入minter_key地址

·amount发行的代币总数。填入整数1000

·Value选填项,具体可查看Value详解。填0或者不填

·Signer这笔交易的签名地址,如果没有开通代付功能,交易手续费将在这个账户地址中扣除,在合约代码中通过msg.sender获取到这个地址。填入minter_key地址

填写完成后点击执行按钮,ConfluxStudio将自动构造交易并推送到网络中。成功执行后可以在下方Result中看到这笔成功的交易。

4.1.2查询代币余额

点击查询区域的下拉菜单并且选择balanceOf方法,这是在代码中定义的查询方法。在下方的tokenOwner填入minter_key地址并点击执行,就可以在下方的Result中看到minter_key账户的Coin代币的余额信息为1000。使用同样方法可以查询到receiver_key账户的代币余额为0。

动态 | ConsenSys首席营销官将离职:据coindesk报道,据知情人士透露,以太坊创业公司ConsenSys的首席营销官Amanda Gutterman即将离职,她成为最近几个月第三位从该公司离职的高管。本月初,ConsenSys Capital联合创始人Andrew Keys宣布加入Darma Capital,前ConsenSys Ventures负责人Kavita Gupta也在5月离职。[2019/6/14]

4.1.3转账代币

在合约调用区域选择send方法,在Parameters中分别填入:

·receiver收款人地址。填入receiver_key地址

·amount转账的代币数量。填入整数200

·Signer这笔交易的签名地址,代币转出的数量将会在这个账户中扣除。填入minter_key地址,

点击执行完成转账,再次查询代币余额可以看到minter_key账户只剩下800代币,而receiver_key账户则从0变成了200代币。

五、代付功能

ConfluxStudio支持Conflux系统合约提供的代付功能。

通过系统合约可以为别的合约设置代付功能,系统合约提供给了四个方法:

·add_privilege添加合约代付白名单,在代付白名单中的地址调用该合约的方法时不需要付手续费,费用由代付账户支付。其中添加特殊地址0x0000000000000000000000000000000000000000代表为所有调用该合约的地址代付费用

·remove_privilege移除合约代付白名单

·set_sponsor_for_collateral设置合约储存费(collateralforstorage)的代付账户及代付金额

·set_sponsor_for_gas设置合约手续费(gasfee)的代付账户、代付金额及每笔交易代付金额上限

启用一个合约的代付需要设置代付的账户、代付金额及代付白名单。教程将会使用ConfluxStudio通过系统合约设置代付账户及代付金额,通过Coin合约添加代付白名单。设置完成后,minter_key账户调用Coin合约的方法时将不会被扣除手续费,手续费由sponsor_key账户代付。

5.1设置代付账户及代付金额

在ConfluxStudio中访问系统合约地址

0x0888000000000000000000000000000000000001,在合约调用区域能看到前文中提及的四个设置代付的方法。

选择set_sponsor_for_collateral方法,该方法有三个参数:

·contract_addr设置代付的合约地址。填入contract_addr

动态 | ConsenSys宣布正重组,以在熊市中简化业务:据CCN报道,作为在加密熊市中简化业务的一部分,以太坊开发工作室位于纽约的区块链初创公司ConsenSys正在重组。ConsenSys首席执行官、以太坊联合创始人Joseph Lubin在公司的一封信中宣布了这一消息。该公司将重组至名为ConsenSys 2.0的新阶段,将淘汰表现不佳的项目,并重新强调创造有形价值。虽然该公司目前没有计划裁员,但Lubin表示不排除未来会。[2018/12/4]

·Value设置代付金额。填入整数40

·Signer代付账户地址。填入sponsor_key地址

填好以上参数并执行运行,系统合约将为Coin合约设置好储存费代付账户,此时sponsor_key账户将会被扣除40CFX。

选择set_sponsor_for_gas方法,该方法有四个参数:

·contract_addr设置代付的合约地址。填入contract_addr

·upper_bound设置每笔交易代付的上限。填入1000000000000

·Value设置代付金额。填入整数40

·Signer代付账户地址。填入sponsor_key地址

填好以上参数并再次执行运行,系统合约将为Coin合约设置好手续费代付账户,此时sponsor_key账户将会再次被扣除40CFX。

完成这两个方法的调用后Coin合约代付账户便设置好了,sponsor_key账户将为Coin合约的手续费和储存费各提供为40CFXToken的代付服务。由于目前代付白名单中并没有账户地址,因此还需要添加白名单地址才能完成代付设置。

5.2添加代付白名单

在Coin合约中集成了设置代付白名单的方法,通过调用此方法可以添加或删除代付白名单。

在ConfluxStudio中访问contract_addr合约,选择add_privilege方法:

·account添加白名单的地址。填入minter_key地址

·Value不填

·Signer这笔交易的签名地址。填入minter_key地址

运行后就成功设置了代付白名单了,至此Coin合约的代付功能设置好了。

5.3代付测试

在进行代付测试前,先查询并记录下minter_key账户的CFX余额。例如本教程中,minter_key的初始余额为97.6210937497093952CFX。

回到Coin合约调用页面,再次调用mint方法并使用minter_key地址增发代币1000,完成代币增发后再次查询minter_key的余额,仍然为97.6210937497093952CFX。

可以看到增发代币的这笔交易,原本应该由minter_key账户支付的手续费,变成了由sponsor_key账户支付。

六、前端项目

动态 | BitConnect集体诉讼案中YouTube成为被告:据cointelegraph报道,BitConnect集体诉讼案中YouTube成为被告。此前因提供虚假回报率项目,Bitconnect被印度犯罪调查部门调查。[2018/7/6]

前端项目源码可以前往Conflux前端。

6.1预备

6.1.1下载项目并安装依赖

·下载前端项目:gitclonegithub.com/ObsidianLabs/conflux-frontend-react

·使用npminstall或者yarn进行项目依赖安装

6.1.2ConfluxPortal的安装及配置

ConfluxPortal是由Conflux提供的浏览器插件,目前提供了Chrome及Firefox的支持,用户可以使用ConfluxPortal进行私钥的管理以及交易签名。

前往ConfluxPortalGitHub下载安装。项目的源代码在GitHub中可以找到。

在这里需要将ConfluxStudio中生成的地址导入到ConfluxPortal中。完成插件安装后,在ConfluxPortal的页面中选择Import,将ConfluxStudio中的minter_key的私钥粘贴到输入框中,点击Import按钮完成私钥导入。

6.2运行前端项目

在运行项目之前,需要修改一些默认的环境变量。

在前面的教程中部署合约后会生成一个contractCreated,这个值便是部署在网络中智能合约的地址。打开项目根目录并找到.env文件,这个文件提供了项目的环境变量,将REACT_APP_CONFLUX_COIN_ADDRESS的值修改为contract_addr。

使用yarnstart启动前端项目,开发服务器运行起来后会在浏览器中打开前端页面。

项目运行起来后,页面将显示四个卡片信息,分别为:

·左上角Conflux网络信息模块

·右上角ConfluxPortal模块

·左下角Coin合约模块

·右下角SponsorWhitelistControl合约模块

6.2.1连接ConfluxPortal

点击右上角组件中的ConnecttoConfluxPortal按钮,ConfluxPortal页面将被打开,输入密码和选择账户后完成连接。连接成功后,将会在按钮下看到当前连接的账户地址以及账户中的CFX余额。

6.2.2运行Coin合约代币增发和代币转账操作

左下角的组件为Coin合约组件,可以通过这个组件调用代币增发和代币转账功能。

·代币增发:选择mint方法并在receiver中填入增发地址minter_key地址和在amount中填入增发代币的数量100,点击PushTransaction,在弹出的ConfluxPortalNotification窗口中点击Confirm按钮来确认交易。

·代币转账:选择send方法并在receiver中填入收款人地址receiver_key地址和在amount中转账代币的数量20,点击PushTransaction,在弹出的ConfluxPortalNotification窗口中点击Confirm按钮来确认交易。

6.2.3查看Coin合约中的余额

选择balanceOf方法并在tokenOwner输入框中填入查询的地址,点击QueryData按钮可以查询到账户的余额。

6.2.4查看Sent事件

选择Sent事件并点击QueryData可以查询到转账操作所触发的转账事件的记录。

6.3前端项目解析

项目使用React进行开发。主要由三大部分组成:视图组件、js-conflux-sdk以及ConfluxPortal。

项目根目录下的.env环境变量,在这里定义了两个环境变量,分别为:

·REACT_APP_CONFLUX_NODE_RPC:Conflux的网络节点地址,目前默认为Oceanus网络的地址

·REACT_APP_CONFLUX_COIN_ADDRESS:已部署的Coin智能合约地址

6.3.1视图组件

视图组件在项目的src/components中,其中App.js为页面的主入口,负责页面的排列及合约信息的读取。

ConfluxNetwork.js

负责渲染Conflux网络信息,NodeURL的值为.env环境变量文件下的REACT_APP_CONFLUX_NODE_RPC设置的值。

ConfluxPortal.js

负责渲染ConfluxPortal的连接信息,并提供了连接ConfluxPortal的交互按钮。

·connectConfluxPortal调用ConfluxPortal的enable方法启用conflux,完成enable后调用getAccount方法获取到Portal中的账户。

·refreshBalance调用ConfluxSDK的getBalance方法来更新账户余额信息

·renderPortalButton根据当前不同的状态,渲染连接Portal的按钮

ConfluxContract.js

负责渲染Conflux合约信息,本项目中提供了Coin和SponsorWhitelistControl两个合约。

ConfluxContract.js由三个组件组成,分别为:

·ConfluxContract负责根据传入的合约abi来渲染合约的信息,包括合约地址、合约方法和事件,合约提交的交互逻辑及显示执行后的结果

·ContractMethods负责渲染合约abi中的方法和事件的表单及相对应的按钮

·ConfluxForm负责根据方法或事件的abi来渲染输入表单

lib

lib在项目的src/lib中,这里的文件主要是为视图提供包括连接网络、构造交易、获取账户、读取合约等服务。

七、总结

在本开发教程中,我们学习了如何使用ConfluxStudio来完成一个完整的CoinDApp开发,其中包括了:

·使用钥匙对管理器创建账户及导出账户私钥

·切换Oceanus网络,查看网络信息

·账户申请CFXToken

·创建、编译并部署项目

·解析Coin合约代码,学习如何编写合约的读写方法及事件

·使用合约浏览器调用Coin合约的代币增发、转账、查询余额及查询事件

·设置并使用智能合约的代付功能

·将私钥导入ConfluxPortal并连接前端项目

·在前端项目中调用Coin合约的代币增发、转账、查询余额及查询事件

·解析前端项目代码,学习如何通过ConfluxPortal和ConfluxJavaScriptSDK连接网络并实现交易

八、关于ConfluxBounty

Conflux基金会为了鼓励用户参与生态建设,提供了ConfluxBounty赏金平台。通过完成Bounty赏金平台发布的各项任务,参与者可以获得FC(FansToken)作为奖励。

8.1FC的价值

FC,全称FansCoin,是由Conflux基金会与社区成员共同研发的生态代币,用于记录和感谢对Conflux生态建设做出贡献的社区成员。FC目前在Oceanus上运行,Conflux基金会承诺,在主网上线后,锁定和未锁定的FC都可以与主网CFX进行1:1承兑,以此保障所有社区成员的劳动成果都可以获得奖励。

FC赏金分配方案会展示在赏金任务详情页中,包括最高奖金数量、奖金分配人数、奖金数量分布、排行名次确定方式等信息。账号余额中的赏金奖励可以随时申请提现至Conflux钱包。Conflux团队会对所有的提现申请进行审核。

对于已经通过的提现申请,Conflux团队会在每周二中午12点进行提币操作。完成提币操作后,您的Conflux钱包将会收到您提现的赏金奖励。

8.2Bounty的价值

ConfluxBounty(bounty.conflux-chain.org)的宗旨是为每一个通证找到价值。Bounty分为几个板块:技术、品牌、社群、资源、其他等。

·技术板块:分为产品、SDK、教程、开发、测试等;主要是奖励社区的一些技术资源贡献者。

·品牌板块:分为文案、设计、视频、媒体、推广等;主要是奖励在各大网络平台分享Conflux的各种最新动态,扩大Conflux的生态影响力的活跃贡献者;

·社群板块:分为活动、推广等;主要是奖励举办各种Conflux相关线上线下活动,帮助解答社群问题,活跃日常气氛等。

·资源板块:分为政务、商务、人力等;主要是奖励为生态中引进企业资源,扩建Conflux生态等。

·其他板块:分为周边、采购等;主要是奖励一些其他的零散任务。

ConfluxStudio下载地址和更新日志:

https://github.com/ObsidianLabs/ConfluxStudio/releases

ConfluxdApp开发教程:

https://github.com/ObsidianLabs/conflux-dapp-tutorial

ConfluxdApp教程相关建议:

https://github.com/ObsidianLabs/conflux-dapp-tutorial/issues

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

水星链

[0:31ms0-0:939ms