区块见闻 区块见闻
Ctrl+D收藏区块见闻

TAL:Conflux开发教程:使用IDE开发DApp的实战操作指南-ODAILY_Island Coin

作者:

时间:

一、简介

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链上NFT:1月26日消息,小红书个人资料页面中数字收藏部分“R-Space”现支持展示公链Conflux链上NFT,本次集成或将利于NFT实现大规模采用。

据悉,小红书此前曾与联盟链集成。[2023/1/26 11:30: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收购开源加密钱包MyCrypto,计划与MetaMask合并:2 月 1 日,以太坊基础设施开发商 ConsenSys 宣布收购开源加密钱包 MyCrypto,预计会将其与旗下以太坊钱包 MetaMask 相结合以提高交易安全性和可用性,但本次收购交易的具体金额没有公开披露。

MetaMask 联合创始人 Dan Finlay 透露,收购 MyCrypto 可以更好地帮助用户在快速发展的 Web3 钱包环境做出最佳决策,因为 MyCrypto 一直是最可靠和最兼容的以太坊钱包之一。

MyCrypto 成立于 2015 年,通过网络浏览器和桌面支持以太坊钱包,而 MetaMask 则专注于支持移动端和浏览器扩展,预计 ConsenSys 后续会创建一个支持桌面、移动和基于浏览器的全渠道钱包产品。(coindesk)[2022/2/2 9:26:49]

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中看到这笔成功的交易。

ConsenSys计划以65亿美元的估值进行新一轮融资:1月26日消息,Metamask钱包背后的以太坊开发商 ConsenSys 正在计划以65亿美元的估值进行新一轮融资,这也是该公司一年内第三次融资,此前该公司于 2021 年 11 月宣布以 32 亿美元的估值完成 2 亿美元的融资。

据悉,ConsenSys 已经开发了六种核心产品,所有产品都旨在扩大对以太坊生态系统的访问。加密钱包 MetaMask 和开发者平台 Infura 是其旗舰工具。(theblockcrypto)[2022/1/27 9:15:26]

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完成2.1亿美元的C轮融资:金色财经报道,加密货币交易初创公司FalconX周二宣布完成了2.1亿美元的C轮融资,其估值达到37.5亿美元,巩固了其独角兽地位。硅谷投资公司Alimeter Capital和Sapphire Ventures领投,投资者还包括Tiger Global和Amex Ventures等。该公司此前在3月份的B轮融资中筹集了5000万美元,当时的估值为6.75亿美元。[2021/8/11 1:47:32]

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合约的代付功能设置好了。

ConsenSys开发人员:将于2021年前几周细化ETH2.0三重路线图交付计划:1月11日,ConsenSys开发人员Ben Edgington发文《超越信标链:Eth2的下一步是什么?》。Ben Edgington在文中回顾了以太坊信标链发展进程,并重新回顾了以太坊2021年的三重路线图:Eth1和Eth2之间的“合并”、分片和轻客户端相关的具体内容(V神已于2020年11月中旬公布)。与此同时,Ben Edgington在文中称,假设信标链继续顺利运行,以太坊2.0在2021年前几周的任务是将这三个工作流细化为具体的交付计划。[2021/1/12 15:57:00]

5.3代付测试

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

回到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

标签:NFLCOITALSTUDInfluencer DogeIsland CoinTALISMelos Studio

火币APP下载热门资讯
300:比特币行情分析:未破9300美元一线,谨防空头-ODAILY_SMAC

昨天到今天的9点,比特币24小时净流入2.48亿美元,其中主力净流入1.72亿美元,散户净流入7719.62万美元.

比特币:比特币行情分析:空头来袭,支撑位是否能有效支撑-ODAILY_300

持币者昨天比特币开盘价9307美元,向下试探中轨支撑位,多空双方在中轨上方争夺激烈,并未突破支撑位.

Conflux:行情空势以占主导,如何把握区间操作?-ODAILY_FLUX

今日操作建议: 比特币今日上冲压力一直没有成功突破,后期持续震荡,但在下午1点一小时MACD交成死叉状态,行情顺势开始下跌,KDJ目前来到20下方,日线来看macd形成背离状态.

MAC:ETH昨日两波上涨虽不大却具战略意义,后市趋势将由此而出-ODAILY_GraphLinq Protocol

昨天日间行情波动很小,从早间开盘到晚上8点开始,比特币的整体波动没有超过100点;晚上8点时盘整在9150一线,在9点开始拉升,直接抵达日间高点9289一线附近.

以太坊:区间越来越明显,但是成功却需要一颗耐住寂寞的心-ODAILY_APH

易天说 随着前几天的一波下行,直接从9660附近盘整下跌到最低9000关口,在昨日中午开始了一波反弹,最高触及日间最高的9330一线.