sol币每年增发多少,sol币最新价格分析

  

一、简介

  

   Conflux Studio是一个帮助开发者快速开发Conlux智能合约的集成开发环境。ConfDAPP的开发教程将使用Conflux Studio在俄刻阿诺斯网络下开发一个简单的令牌应用Coin。   

  

  通过本开发教程,您将学习如何编写和调用Conflux智能合约,配置智能合约的代理支付以及如何使用Web前端项目与智能合约进行交互,从而实现一个包括前端和智能合约在内的完整DApp。   

  

二、准备工作

  

   2.1安装IDE   

  

  请访问GitHub的下载页面。   

  

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

  

  正确安装Conlux Studio并首次启动后,Conlux Studio会显示欢迎页面,并根据提示完成Docker、Conflux Node、Conflux Truffle的下载、安装和启动。   

  

  2.2创建钱包   

  

  完成所有安装步骤后,首先需要创建一个密钥对来完成后续的契约部署和调用。   

  

  在Conflux Studio的任何界面中,单击应用程序左下方的密钥图标打开密钥管理器。单击创建按钮打开新密钥对的弹出窗口,输入密钥对的名称,然后单击保存按钮。完成后,您将在密钥管理器中看到新生成的密钥对的地址。密钥对由一个私钥和一个公钥组成,公钥在智能合约中通常被称为地址。   

  

  您可以通过单击每个地址后面的眼睛按钮打开一个弹出窗口来查看私钥,从而导出私钥。弹出窗口显示地址和私钥。在后续教程中,您需要通过管理器导出私钥。   

  

  为了成功完成本教程,您首先需要创建三个密钥对:   

  

  Minter _ key用于Coin契约部署的签名,是本教程中最常用的密钥对。   

  

  receiver _ key用于接收硬币合约的转账,后面介绍转账的时候会用到。   

  

  Spooner _ key用于硬币合约支付功能,后面介绍支付功能时会用到。   

  

  2.3连接到汇流网络   

  

  本教程将在俄刻阿诺斯网络中部署和调用合同。单击顶部网络选项卡的倒三角形,打开下拉菜单,单击选择要切换的俄刻阿诺斯网络。   

  

  切换完成后,在主页面可以看到当前网络是oceanus。页面左侧包含当前网络的节点URL、链ID和TPS信息,页面右侧包含当前网络块的信息。   

  

  2.4 CFX测试申请   

  

  单击顶部的“资源管理器”选项卡打开块浏览器,并将密钥对地址粘贴到地址栏中。左边可以看到当前地址的CFX余额信息。   

  

  在区块链的世界里,人们通常把申请测试令牌的方法称为水龙头。目前,在俄刻阿诺斯网络下,水龙头申请的每一个令牌是100 CFX。   

  

  有两种方法可以获得CFX:   

  

  输入地址后,点击地址栏右侧的tap按钮,Conflux Studio会自动申请CFX对于地址;   

  

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

  

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

  

  当前余额信息是:   

  

  Minter _ key balance 100 CFX   

  

  Receiver _ key balance 0 CFX   

  

  Spooner _ key天平100 CFX   

  

三、智能合约创建项目

  

   3.1创建项目   

  

  点击   

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

  

3.2 合约代码

  

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

  

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

  

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

  

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

  

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

  

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

  

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

  

3.3 编译及部署合约

  

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

  

在部署合约前,首先需要确认在 Explorer 中选择合约部署所使用的地址,Conflux Studio 会使用这个地址将部署合约这笔交易进行签名(选择的方法为在 Explorer 的地址栏中输入地址)。在合约代码的 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 地址

  

填写完成后点击执行按钮,Conflux Studio 将自动构造交易并推送到网络中。成功执行后可以在下方 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 代币。

  

4.1.4 Value 参数

  

Conflux 智能合约的每个调用的方法都可以带上 Value 参数,这是一个可选的参数。如果带上了这个值,智能合约除了在执行这个方法的逻辑外,还会额外转 Value 中指定数量的 CFX token 到 receiver 账户,转账金额为 Value 中所填的值。有些智能合约的方法需要这个参数才可以完成调用,但是在 Coin 合约不需要这个参数。

  

后文中的代付功能将会使用到 Value 参数。

  

4.2 查询事件

  

在事件区域选择 Sent 并点击执行,下方的 Event Logs 可以看到转账的记录。Sent 事件的列都是由代码中的 Sent 事件的参数来定义的(其中 epoch 为事件发生的时间,这个为系统默认列)。在代码中定义了 Sent 方法的参数为 from, to 和 amount,分别对应了这笔转账的发起者地址,接受者地址以及转账的数量。

  

五、代付功能

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

  

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

  

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

  

remove_privilege 移除合约代付白名单

  

set_sponsor_for_collateral 设置合约储存费 (collateral for storage) 的代付账户及代付金额

  

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

  

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

  

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

  

在 Conflux Studio 中访问系统合约地址

  

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

  

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

  

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

  

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

  

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

  

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

  

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

  

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

  

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

  

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

  

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

  

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

  

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

  

5.2 添加代付白名单

  

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

  

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

  

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

  

Value 不填

  

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

  

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

  

5.3 代付测试

  

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

  

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

  

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

  

六、前端项目

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

  

6.1 预备

  

6.1.1 下载项目并安装依赖

  

下载前端项目:git clone github.com/ObsidianLabs/conflux-frontend-react

  

使用 npm install 或者 yarn 进行项目依赖安装

  

6.1.2 Conflux Portal 的安装及配置

  

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

  

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

  

在这里需要将 Conflux Studio 中生成的地址导入到 Conflux Portal 中。完成插件安装后,在 Conflux Portal 的页面中选择 Import,将 Conflux Studio 中的 minter_key 的私钥(在创建钱包章节中介绍了如何将私钥导出)粘贴到输入框中,点击 Import 按钮完成私钥导入。

  

6.2 运行前端项目

  

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

  

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

  

使用 yarn start 启动前端项目,开发服务器运行起来后会在浏览器中打开前端页面(如果没有打开,请在浏览器中访问 localhost:3000)。

  

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

  

左上角 Conflux 网络信息模块

  

右上角 Conflux Portal 模块

  

左下角 Coin 合约模块

  

右下角 SponsorWhitelistControl 合约模块

  

6.2.1 连接 Conflux Portal

  

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

  

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

  

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

  

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

  

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

  

6.2.3 查看 Coin 合约中的余额

  

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

  

6.2.4 查看 Sent 事件

  

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

  

6.3 前端项目解析

  

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

  

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

  

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

  

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

  

6.3.1 视图组件

  

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

  

ConfluxNetwork.js

  

负责渲染 Conflux 网络信息,Node URL 的值为 .env 环境变量文件下的 REACT_APP_CONFLUX_NODE_RPC 设置的值(默认为 Oceanus 网络)。

  

ConfluxPortal.js

  

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

  

connectConfluxPortal 调用 Conflux Portal 的 enable 方法启用 conflux (conflux portal 实例由浏览器插件注入到 windows.portal 中),完成 enable 后调用 getAccount 方法获取到 Portal 中的账户。

  

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

  

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

  

ConfluxContract.js

  

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

  

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

  

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

  

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

  

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

  

lib

  

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

  

  

七、总结

  

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

  

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

  

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

  

账户申请 CFX Token

  

创建、编译并部署项目

  

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

  

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

  

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

  

将私钥导入 Conflux Portal 并连接前端项目

  

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

  

解析前端项目代码,学习如何通过 Conflux Portal 和 Conflux JavaScript SDK 连接网络并实现交易

  

八、关于 Conflux Bounty

  

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

  

8.1 FC 的价值

  

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

  

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

  

对于已经通过的提现申请,Conflux 团队会在每周二中午 12 点(如遇节假日,往后顺延至下一个工作日)进行提币操作。完成提币操作后,您的 Conflux 钱包将会收到您提现的赏金奖励。

  

8.2 Bounty 的价值

  

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

  

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

  

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

  

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

  

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

  

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

  

Conflux Studio 下载地址和更新日志:

  

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

  

Conflux dApp 开发教程:

  

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

  

Conflux dApp 教程相关建议:

  

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

相关文章