一、简介
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余额信息。
Robinhood推出Robinhood Connect:金色财经报道,交易平台 Robinhood Markets (HOOD) 推出了“Robinhood Connect”,这是一项新功能,用户无需离开去中心化应用程序 (dapp) 或进入其加密账户即可为其 Web3 钱包注资。
该公司在宣布,Robinhood Connect 还将让开发人员将该功能直接嵌入到他们的 dapp 中,以便 Robinhood 用户可以购买、转移和资助他们的自托管钱包。该公司在一份声明中表示,随着 Robinhood Connect 的推出,客户将能够访问他们的 Robinhood 的凭据并绕过额外的步骤。[2023/4/28 14:31:43]
在区块链的世界中,大家通常将申请测试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:反对美国SEC扩大“交易平台”的定义:4月19日消息,据官方博客,以太坊软件开发商ConsenSys已向美国证券交易委员会(SEC)提交意见,以反对SEC提出的“交易法”草案。ConsenSys表示,“我们担心拟议规则中的某些语言可能会无意中将去中心化系统指定为 1934 年《交易法》含义内的交易所,如果这些系统是用于交易被误解为证券的加密货币。”此外,ConsenSys呼吁委员会明确表明基于区块链的网络不属于此处所讨论的草案的范围。此前消息,a16z及Delphi Digital均已向美国SEC提交关于交易法草案反对意见。[2022/4/19 14:33:17]
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地址
NFT和数字资产公司Ioconic融资150万美元,KeneticCapital领投:NFT和数字资产公司Ioconic完成150万美元融资,KeneticCapital领投,其他私人投资者参投。Ioconic为进入数字资产领域的品牌和个人提供全面的解决方案,包括授权和品牌代表服务、NFT创作、营销、发放服务以及社交代币创建服务。迄今为止,Ioconic已经支持150余个项目。(BusinessLeader)[2021/8/10 1:46:22]
填写完成后点击执行按钮,ConfluxStudio将自动构造交易并推送到网络中。成功执行后可以在下方Result中看到这笔成功的交易。
4.1.2查询代币余额
点击查询区域的下拉菜单并且选择balanceOf方法,这是在代码中定义的查询方法。在下方的tokenOwner填入minter_key地址并点击执行,就可以在下方的Result中看到minter_key账户的Coin代币的余额信息为1000。使用同样方法可以查询到receiver_key账户的代币余额为0。
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账户代付。
美国运通投资加密货币交易平台FalconX:12月16日消息,美国运通的风险投资部门已经投资了加密货币交易平台FalconX,具体投资金额未透露。美国运通风险投资部门全球负责人Harshul Sanghi表示,美国运通投资于初创公司,是一种更好地了解支付生态系统新兴领域的方式。(彭博社)[2020/12/17 15:26:47]
5.1设置代付账户及代付金额
在ConfluxStudio中访问系统合约地址
0x0888000000000000000000000000000000000001,在合约调用区域能看到前文中提及的四个设置代付的方法。
选择set_sponsor_for_collateral方法,该方法有三个参数:
·contract_addr设置代付的合约地址。填入contract_addr
·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。
动态 | ConsenSys收购lanetary Resources:据livebitcoinnews消息,近日,ConsenSys收购了美国小行星采矿公司Planetary Resources。Planetary Resources的总法律顾问Brian Israel也将加入ConsenSys团队。Brian Israel认为区块链、智能合约的有用产品将有助于使私人太空飞行过程变得更加容易。并且,这是一个“自然的解决方案”,它将使世界各地的人们能够轻松地“协调和交易”。[2018/11/6]
回到Coin合约调用页面,再次调用mint方法并使用minter_key地址增发代币1000,完成代币增发后再次查询minter_key的余额,仍然为97.6210937497093952CFX。
可以看到增发代币的这笔交易,原本应该由minter_key账户支付的手续费,变成了由sponsor_key账户支付。
六、前端项目
前端项目源码可以前往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
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。