Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
一、简介: n* U5 I, Q5 i/ U( ~
Conflux Studio 是一个帮助开发者快速开发 Conflux 智能合约的集成化开发环境。Conflux DApp 开发教程将使用 Conflux Studio 在 Oceanus 网络下开发一个简单的代币应用 Coin。: ~. T. h. m! ?: u/ Y1 |
通过这个开发教程,你将会学习到如何进行 Conflux 智能合约的编写、调用,配置智能合约的代付以及如何使用 Web 前端项目与智能合约进行交互,从而实现一个包含前端和智能合约的完整的 DApp。! M) @; r: c) ^
二、准备工作& X) D6 G' ^  {$ O
2.1 安装 IDE3 b0 {, J- h: d0 d" z* I
请在 GitHub 的下载页面
- W5 d+ R) z# w( b# a+ u. L(github.com/ObsidianLabs/ConfluxStudio/releases) 下载 Conflux Studio。目前 Conflux Studio 支持 macOS 和 Linux 系统,请根据系统下载对应的版本。
7 G5 P3 n' ]% v4 a% _' L正确安装 Conflux Studio 并初次启动后,Conflux Studio 将显示欢迎页面,根据提示完成 Docker, Conflux Node 以及 Conflux Truffle 的下载、安装及启动。
4 T9 v5 }9 i+ |+ q' B2.2 创建钱包
, S# ]  g. [" a1 @; Y完成所有的安装步骤后,首先需要创建钥匙对来完成后续的合约部署以及调用。: m& z# U8 f1 O% c# ?, q- X
在 Conflux Studio 的任意界面,点击应用左下?的钥匙图标,打开密钥管理器。点击 Create 按钮打开新钥匙对弹窗,输入钥匙对的名字并点击 Save 按钮。完成后将在密钥管理器中看到刚刚生成的钥匙对的地址。钥匙对由私钥和公钥组成,公钥在智能合约中也常被称作地址。, e! e1 i% n( `: a6 _) c% |, ?2 w' H
导出私钥可以通过点击每个地址后面的眼睛按钮打开查看私钥弹窗,弹窗显示地址以及私钥。后续教程中会需要通过管理器导出私钥。: f/ G. \: O( ^& {$ T
为了顺利完成教程,首先需要创建三个钥匙对:
- p3 e8 ]* ?3 \5 ~; @8 w**· **minter_key 用于 Coin 合约部署时的签名,是这个教程中最常使用的钥匙对
* ]8 q9 P5 n2 q; t**· **receiver_key 用于 Coin 合约接收转账,将在后文中介绍转账时用到. T5 _& T5 H' m9 O$ o
**· **sponsor_key 用于 Coin 合约代付功能,将在后文中介绍代付功能时用到
8 q' L' G+ n  \' r( C+ O. c2.3 连接 Conflux 网络1 ^# T# `' N, }8 H/ n. O' K
教程将在 Oceanus 网络进行合约的部署以及合约的调用。点击顶部 Network 标签的倒三角打开下拉菜单,点击选择 Oceanus 网络进行切换。1 h& P5 n' M, A0 r$ M, ~
切换完成后,可以在主页面中看到当前网络为 oceanus。页面左边包括了当前网络的节点 URL,Chain ID,TPS 信息,页面右边包含了当前网络区块的信息。  P% f/ w4 s. C) Y' E+ V+ q5 q
2.4 申请测试 CFX
( Y! m- J5 n# F% I点击顶部 Explorer 标签打开区块浏览器,并在地址栏粘贴钥匙对地址,可以在左边看到当前地址的 CFX 余额信息。9 J2 a) i0 n7 |, X  d4 Q& S
在区块链的世界中,大家通常将申请测试 Token 的方式称为 faucet,目前在 Oceanus 网络下每次 faucet 申请到的 Token 为 100 CFX。
! I- X# w9 Q" m8 G. ^1 a( h( C获取 CFX 的方式有两种方式:
- k0 T0 V8 ?) `, |& w- a· 输入地址后点击地址栏右边的水龙头按钮,Conflux Studio 将为地址自动申请 CFX;
" `5 i& J' Q- ~  x& L  E) W· 你也可以直接在浏览器中输入 wallet.confluxscan.io/faucet/dev/ask?address={address} 来申请 CFX;
& l# P) y5 M7 w2 J5 i8 y使用上述方法在 Conflux Studio 中为 minter_key 和 sponsor_key 申请 CFX Token。完成申请后,这两个账户上的余额将会从 0 CFX 更新为 100 CFX。
5 [: x! V+ D1 H目前余额信息为:
# S1 C0 y9 G5 Y, f**· **minter_key 余额 100 CFX
7 f2 e( i" v( a2 m* c1 q**· **receiver_key 余额 0 CFX
* \: @# p* T. f) e) @**· **sponsor_key 余额 100 CFX/ w1 k) v4 W- r+ _( ~6 i
**三、智能合约创建项目 **
% D( {: m6 v- s* ^3.1 创建项目3 i; h0 t+ y; o' h5 q! d8 q4 K
点击顶部左边的 Project 标签切换至项目列表页面,点击页面中的 New 按钮打开项目创建窗口,输入项目的名称并选择 coin 模版,点击 Create Project 完成项目的创建。
  ~" q; `9 R0 }( ^  Q3.2 合约代码
! J/ v% s" x9 k. rCoin 合约是一个简单的代币合约,其中:; q& c# U" ?9 g
**· **通过 mint 方法可以增发代币数量0 |/ B7 t0 w$ I1 [9 x% h
**· **通过 send 方法可以将一定数量的代币转账给别的用户,同时会在事件中记录下这笔转账的信息% U6 M- j- T* Z+ M  _2 j
**· **通过 balanceOf 方法可以查询到指定账户地址的代币余额; f1 C) }) _5 z/ x4 V
**· **通过 add_privilege 方法可以为合约添加代付白名单  w. @  [" y9 R( f1 n3 w
**· **通过 remove_privilege 方法可以为合约移除代付白名单
3 p/ U5 _( u2 @5 y0 mConflux 智能合约使用 Solidity 语言进行开发,打开目录下的 contracts/Coin.sol 文件,这个是本项目的核心代码:
  t# p* s0 T1 c( Z: n# I// 指定了 Solidity 的版本,通过 Pragmas(https://solidity.readthedocs.io/en/latest/layout-of-source-files.html#pragmas) 告诉编译器本代码可以兼容的版本为 0.5.0 到 0.7.05 G3 D0 v+ c# Y* w3 n* a
pragma solidity >=0.5.0 8 q0 v/ a* q" y! H% [7 _/ f, G( `
// 导入 SponsorWhitelistControl 合约$ }, Z8 E$ {0 @  D$ W. q
import "./SponsorWhitelistControl.sol";
& A5 ]5 h8 D( E$ Y// 定义 Coin 的合约
; F# W' P6 a9 p, F4 }- @. N0 o, H- n$ Bcontract Coin {! U3 p# X1 x* H/ F1 Y$ d9 Q1 v
// 定义了两个 State Variables(https://solidity.readthedocs.io/en/latest/structure-of-a-contract.html#state-variables)
: J5 s6 q4 U% J, h8 ^address public minter;& B4 o2 O3 A# P0 S) ^
mapping (address => uint) private balances;
* M8 k! }% G! T& [' ?  h4 R// 使用 SponsorWhitelistControl 合约连接系统合约
# g' Q) m5 C( y* ESponsorWhitelistControl constant private SPONSOR = SponsorWhitelistControl(address(0x0888000000000000000000000000000000000001));
& s) h! f* G; g9 }' F0 V// 定义了 `Sent` 的事件,定义了 from / to / amount 列
" ^! i& \! z6 W; g5 Hevent Sent(address from, address to, uint amount);
/ c& @) c7 g$ D// Coin 合约的 constructor ,在 constructor 中指定了 minter 的地址
% q4 Q# H+ M/ _! ^constructor() public {4 T* j, v7 ~% a8 o
    // msg.sender 为部署合约时签名的账户地址,将这个地址赋值给 minter
6 g7 M+ ?0 `. K1 |    minter = msg.sender;
$ ^0 }8 H- b4 V}
, a+ ^7 {2 W3 r& k// 定义 mint 方法,通过此方法来增发代币
2 A: _/ _" ]; W& ~+ K! I; ]8 afunction mint(address receiver, uint amount) public {
9 \: l  g3 f% e' ~$ @4 n    require(msg.sender == minter);; z# W/ |0 i2 W7 U0 p
    require(amount }' l& {0 J+ x" u! p% ~$ U4 R
3.3 编译及部署合约* |" X- s* q+ u* w1 }/ S: V
点击工具栏的 Build 按钮进行合约的编译,编译的结果将会保存在 build/Coin.json 文件中。
4 X; B0 H- `- ^5 p在部署合约前,首先需要确认在 Explorer 中选择合约部署所使用的地址,Conflux Studio 会使用这个地址将部署合约这笔交易进行签名(选择的方法为在 Explorer 的地址栏中输入地址)。在合约代码的 constructor 中,minter 被赋值为 msg.sender,这个 msg.sender 就是 Explorer 所选择的地址。
4 `4 ]2 _; {/ Z8 V! W' }3 P在此我们选择 minter_key 作为部署合约的签名者。6 U; Q4 \5 ]- e
点击工具栏的部署按钮进行部署,部署完成后,部署结果会在 deploys 的 JSON 文件中,在这个文件中可以在 contractCreated 中找到当前合约部署的地址,后文中使用 contract_addr 来代表这个合约地址。
9 E6 q9 ]$ D" f  C四、调用合约
0 h7 d9 o3 R0 E8 R点击顶部的 Contract 标签切换至合约页面,在地址栏输入 contract_addr 地址并加载合约。
- m1 Y$ W- }1 v5 n! Q合约页面由三个部分组成:  j+ ~7 g3 C  x/ A/ ~. z
**· **左边为合约调用区域
( @5 ]9 a3 y2 U! S% I- S**· **中间为合约数据查询区域
  G  V, F& j1 @2 _/ V· 右边为事件查询区域
2 `$ B( O. Z: P- y2 @; B4.1 合约调用及查询# x/ |3 P" L& f
4.1.1 增发代币. z3 \% G8 n& `5 b) G' d
点击合约调用的下拉菜单中选择 mint 方法,在下方的参数区域分别填入以下信息:- d+ u0 p% N+ n8 S2 @* m) U  G3 S
· receiver 接收代币的地址。填入 minter_key 地址
0 }) \/ o. B, s4 Q· amount 发行的代币总数。填入整数 1000
. t& z& U9 O% C& A9 }/ F· Value 选填项,具体可查看 Value 详解。填 0 或者不填
, [) P% K3 e. ?· Signer 这笔交易的签名地址,如果没有开通代付功能,交易手续费将在这个账户地址中扣除,在合约代码中通过 msg.sender 获取到这个地址。填入 minter_key 地址$ `2 Y8 E5 \, ?1 \5 A' G
填写完成后点击执行按钮,Conflux Studio 将自动构造交易并推送到网络中。成功执行后可以在下方 Result 中看到这笔成功的交易。
! b5 n2 m4 k+ r( F( T4.1.2 查询代币余额$ K1 G- T0 d) T) _$ S
点击查询区域的下拉菜单并且选择 balanceOf 方法,这是在代码中定义的查询方法。在下方的 tokenOwner 填入 minter_key 地址并点击执行,就可以在下方的 Result 中看到 minter_key 账户的 Coin 代币的余额信息为 1000。使用同样方法可以查询到 receiver_key 账户的代币余额为 0。  R  ~2 W4 z) q% R" t% z
4.1.3 转账代币
1 a$ W0 U, j; I( k5 l' m在合约调用区域选择 send 方法,在 Parameters 中分别填入:
) N) u# A' v/ ~) s+ e1 }· receiver 收款人地址。填入 receiver_key 地址
! `* t2 D" t( T0 A5 D; }- f% l· amount 转账的代币数量。填入整数 200
9 n8 J, z% W2 S! b/ k; x  t· Signer 这笔交易的签名地址,代币转出的数量将会在这个账户中扣除。填入 minter_key 地址,
" M8 W2 O% J: C  V% L" M& T点击执行完成转账,再次查询代币余额可以看到 minter_key 账户只剩下 800 代币,而 receiver_key 账户则从 0 变成了 200 代币。
" m, ~+ X  e3 |' g* i2 ?4.1.4 Value 参数, L; T1 H! x( P9 [$ n" {8 e. ]
Conflux 智能合约的每个调用的方法都可以带上 Value 参数,这是一个可选的参数。如果带上了这个值,智能合约除了在执行这个方法的逻辑外,还会额外转 Value 中指定数量的 CFX token 到 receiver 账户,转账金额为 Value 中所填的值。有些智能合约的方法需要这个参数才可以完成调用,但是在 Coin 合约不需要这个参数。3 B, i4 Z9 W: {. \0 F- O, A
后文中的代付功能将会使用到 Value 参数。9 U! S* R& ]4 @0 Z" ]: M% X% j6 s
4.2 查询事件+ J0 p+ q5 K. b) o) P
在事件区域选择 Sent 并点击执行,下方的 Event Logs 可以看到转账的记录。Sent 事件的列都是由代码中的 Sent 事件的参数来定义的(其中 epoch 为事件发生的时间,这个为系统默认列)。在代码中定义了 Sent 方法的参数为 from, to 和 amount,分别对应了这笔转账的发起者地址,接受者地址以及转账的数量。% z7 e% Y9 j1 r- g7 _
五、代付功能. F1 I1 h# \" W# p1 r% P6 _" y
Conflux Studio 支持 Conflux 系统合约提供的代付功能。, G7 F; F. w. U) [: N$ v
通过系统合约可以为别的合约设置代付功能,系统合约提供给了四个方法:7 ]; c( u. G; x7 d
· add_privilege 添加合约代付白名单,在代付白名单中的地址调用该合约的方法时不需要付手续费,费用由代付账户支付。其中添加特殊地址 0x0000000000000000000000000000000000000000 代表为所有调用该合约的地址代付费用: P" U) u, d/ m$ f
· remove_privilege 移除合约代付白名单
3 g4 H8 g- N  ]' P4 W3 w, K· set_sponsor_for_collateral 设置合约储存费 (collateral for storage) 的代付账户及代付金额! ~1 h7 O! n4 |# M, f% t3 R: S
· set_sponsor_for_gas 设置合约手续费 (gas fee) 的代付账户、代付金额及每笔交易代付金额上限
- ], J, j7 U& o. i  j启用一个合约的代付需要设置代付的账户、代付金额及代付白名单。教程将会使用 Conflux Studio 通过系统合约设置代付账户及代付金额,通过 Coin 合约添加代付白名单。设置完成后,minter_key 账户调用 Coin 合约的方法时将不会被扣除手续费,手续费由 sponsor_key 账户代付。
% e) L  I# T) e0 H$ s3 e9 N5.1 设置代付账户及代付金额; f4 L8 m+ s0 O2 S4 S. i! M2 E, b
在 Conflux Studio 中访问系统合约地址9 e  O. F- E% b7 }3 \" |
0x0888000000000000000000000000000000000001,在合约调用区域能看到前文中提及的四个设置代付的方法。
1 P  K- x' j% p* `5 R& }' {+ Ximage选择 set_sponsor_for_collateral 方法,该方法有三个参数:
/ O  [4 V+ m) D· contract_addr 设置代付的合约地址。填入 contract_addr
+ E9 ~8 |0 S" Y; |3 Q· Value 设置代付金额。填入整数 40, G. i; e; ?# z0 Q  [
· Signer 代付账户地址。填入 sponsor_key 地址. `2 O) v, z: m9 i& t$ S* p
填好以上参数并执行运行,系统合约将为 Coin 合约设置好储存费代付账户,此时 sponsor_key 账户将会被扣除 40 CFX。
8 ?/ |+ h1 t" o选择 set_sponsor_for_gas 方法,该方法有四个参数:9 i2 k. R% Y7 g
· contract_addr 设置代付的合约地址。填入 contract_addr7 H; k! R( a, m2 m7 [/ [
· upper_bound 设置每笔交易代付的上限。填入 1000000000000
3 _1 @- q+ {2 h: @9 E3 Q+ @· Value 设置代付金额。填入整数 40
5 G% y* j- Y3 t9 A) ?· Signer 代付账户地址。填入 sponsor_key 地址
4 t2 `: r$ }7 U# ~* P8 P填好以上参数并再次执行运行,系统合约将为 Coin 合约设置好手续费代付账户,此时 sponsor_key 账户将会再次被扣除 40 CFX。  ^) v+ V, k' z
完成这两个方法的调用后 Coin 合约代付账户便设置好了,sponsor_key 账户将为 Coin 合约的手续费和储存费各提供为 40 CFX Token 的代付服务。由于目前代付白名单中并没有账户地址,因此还需要添加白名单地址才能完成代付设置。  \* j# N( j# i; q  [* q
5.2 添加代付白名单
$ S- O& a7 G! q在 Coin 合约中集成了设置代付白名单的方法,通过调用此方法可以添加或删除代付白名单。
/ D( A( ^) x; \5 H; i$ ?在 Conflux Studio 中访问 contract_addr 合约,选择 add_privilege 方法:' V) L/ [$ G* G9 ^6 q
· account 添加白名单的地址。填入 minter_key 地址
/ B8 @5 ?7 P  C& K9 g4 W· Value 不填
) d, T9 p& y0 l! s# V) U% A· Signer 这笔交易的签名地址。填入 minter_key 地址
4 X, r; ?$ @/ b5 |' w运行后就成功设置了代付白名单了,至此 Coin 合约的代付功能设置好了。
( g% n/ J% @1 c  T5.3 代付测试
. I% Q# F5 j$ K& y' L1 q/ A; _( K在进行代付测试前,先查询并记录下 minter_key 账户的 CFX 余额。例如本教程中,minter_key 的初始余额为 97.6210937497093952 CFX。
3 o2 x6 j; G0 r! H8 l# b$ T回到 Coin 合约调用页面,再次调用 mint 方法并使用 minter_key 地址增发代币 1000,完成代币增发后再次查询 minter_key 的余额,仍然为 97.6210937497093952 CFX。
# L4 m4 ~. t7 L% h0 N" E可以看到增发代币的这笔交易,原本应该由 minter_key 账户支付的手续费,变成了由 sponsor_key 账户支付。
1 c6 [% i3 f1 {六、前端项目
3 ?4 o: G, }4 _' w4 O2 P前端项目源码可以前往 Conflux 前端。% I. ?0 w7 G/ F: [4 \+ F
6.1 预备
! f- H! Z) T) p* k6.1.1 下载项目并安装依赖
" ]+ M' {9 O9 z$ v· 下载前端项目:git clone github.com/ObsidianLabs/conflux-frontend-react
1 [# o0 V; I% A. G* C- E( P$ m  \6 N& g****·** **使用 npm install 或者 yarn 进行项目依赖安装
; }4 Y% q' T) M. v  U6.1.2 Conflux Portal 的安装及配置( @4 X. b: t4 Y
Conflux Portal 是由 Conflux 提供的浏览器插件,目前提供了 Chrome 及 Firefox 的支持,用户可以使用 Conflux Portal 进行私钥的管理以及交易签名。( P1 g9 t( D6 ~
前往 Conflux Portal GitHub 下载安装。项目的源代码在 GitHub 中可以找到。& O% a) {8 d9 Y" U# Q
在这里需要将 Conflux Studio 中生成的地址导入到 Conflux Portal 中。完成插件安装后,在 Conflux Portal 的页面中选择 Import,将 Conflux Studio 中的 minter_key 的私钥(在创建钱包章节中介绍了如何将私钥导出)粘贴到输入框中,点击 Import 按钮完成私钥导入。
9 K$ v9 @' d$ g% M6.2 运行前端项目# {! l0 Q  d& j9 O$ H
在运行项目之前,需要修改一些默认的环境变量。' U$ [: ]8 v& q3 X+ b
在前面的教程中部署合约后会生成一个 contractCreated,这个值便是部署在网络中智能合约的地址。打开项目根目录并找到 .env 文件,这个文件提供了项目的环境变量,将 REACT_APP_CONFLUX_COIN_ADDRESS 的值修改为 contract_addr。; J& B1 b# ^* b9 [. @5 w1 J- ]
使用 yarn start 启动前端项目,开发服务器运行起来后会在浏览器中打开前端页面(如果没有打开,请在浏览器中访问 localhost:3000)。' C& g% L8 D- x
项目运行起来后,页面将显示四个卡片信息,分别为:
1 e, ?/ m. R$ ]****·** **左上角 Conflux 网络信息模块  W/ l- s5 G" _7 k: z$ s
****·** **右上角 Conflux Portal 模块
0 ~/ B4 ]7 G% v* n9 P! x****·** **左下角 Coin 合约模块4 }0 c1 I# t: P: s" @' _; t
****·** **右下角 SponsorWhitelistControl 合约模块& ~! s% j/ |/ O7 o* N
6.2.1 连接 Conflux Portal/ P& h# Y% K/ M. p" R7 O6 Y
点击右上角组件中的 Connect to Conflux Portal 按钮,Conflux Portal 页面将被打开,输入密码和选择账户后完成连接。连接成功后,将会在按钮下看到当前连接的账户地址以及账户中的 CFX 余额。
, S& a3 p" ]$ d5 U6.2.2 运行 Coin 合约代币增发和代币转账操作
3 Y: B/ Z# V9 F+ [9 l( ~4 M左下角的组件为 Coin 合约组件,可以通过这个组件调用代币增发和代币转账功能。, F, n: d8 |7 R
****·** **代币增发:选择 mint 方法并在 receiver 中填入增发地址 minter_key 地址和在 amount 中填入增发代币的数量 100,点击 Push Transaction,在弹出的 ConfluxPortal Notification 窗口中点击 Confirm 按钮来确认交易。, \. ~5 S' O2 e. Q# H2 d
****·** **代币转账:选择 send 方法并在 receiver 中填入收款人地址 receiver_key 地址和在 amount 中转账代币的数量 20,点击 Push Transaction,在弹出的 ConfluxPortal Notification 窗口中点击 Confirm 按钮来确认交易。
$ L- V( u" U2 ?5 k% ]6.2.3 查看 Coin 合约中的余额
( j2 a8 m9 Q; a7 _选择 balanceOf 方法并在 tokenOwner 输入框中填入查询的地址,点击 Query Data 按钮可以查询到账户的余额。
+ I( f  S, f1 v5 r8 i- {6.2.4 查看 Sent 事件
; V  |" X6 j& i& X选择 Sent 事件并点击 Query Data 可以查询到转账操作所触发的转账事件的记录。
8 w6 _# T$ k1 s, D/ H( u2 }6.3 前端项目解析
% |9 M8 {5 {9 ~: W9 R项目使用 React 进行开发。主要由三大部分组成:视图组件、js-conflux-sdk 以及 Conflux Portal。3 ~+ ~3 z, m- t' O
项目根目录下的 .env 环境变量,在这里定义了两个环境变量,分别为:
# x6 w, m) X7 a& j' a****·** **REACT_APP_CONFLUX_NODE_RPC:Conflux 的网络节点地址,目前默认为 Oceanus 网络的地址2 ?" p7 T' A( i
****·** **REACT_APP_CONFLUX_COIN_ADDRESS:已部署的 Coin 智能合约地址
1 f# M- B$ C- Z% f& \% y. R6.3.1 视图组件
; F. M9 h# [. x视图组件在项目的 src/components 中,其中 App.js 为页面的主入口,负责页面的排列及合约信息的读取。' {3 t  j; ?% i+ M, V8 @  @
ConfluxNetwork.js; n- t  r3 W+ K% T' i
负责渲染 Conflux 网络信息,Node URL 的值为 .env 环境变量文件下的 REACT_APP_CONFLUX_NODE_RPC 设置的值(默认为 Oceanus 网络)。( U6 P7 @4 j0 y7 @
ConfluxPortal.js; f6 O' a# r! {# K- E' W
负责渲染 Conflux Portal 的连接信息,并提供了连接 Conflux Portal 的交互按钮。
. ]+ w; `* W' B****·** **connectConfluxPortal 调用 Conflux Portal 的 enable 方法启用 conflux (conflux portal 实例由浏览器插件注入到 windows.portal 中),完成 enable 后调用 getAccount 方法获取到 Portal 中的账户。
: u+ Y$ t& ]  Z****·** **refreshBalance 调用 Conflux SDK 的 getBalance 方法来更新账户余额信息) h7 d* l& G+ K$ l" v2 o
****·** **renderPortalButton 根据当前不同的状态,渲染连接 Portal 的按钮5 d. d* _/ L* P
ConfluxContract.js
- _6 t, x" P+ S负责渲染 Conflux 合约信息,本项目中提供了 Coin 和 SponsorWhitelistControl 两个合约。7 G4 T+ i4 j1 a3 T' v# E: N
ConfluxContract.js 由三个组件组成,分别为:  n3 }/ y4 T' e
****·** **ConfluxContract 负责根据传入的合约 abi 来渲染合约的信息,包括合约地址、合约方法和事件,合约提交的交互逻辑及显示执行后的结果
1 O; e) \. F* T% H+ y6 _****·** **ContractMethods 负责渲染合约 abi 中的方法和事件的表单及相对应的按钮
- R. n& `+ u* o9 ~& ~7 k. I****·** **ConfluxForm 负责根据方法或事件的 abi 来渲染输入表单
0 Y! f" k" A: p' V* d* h* Y; glib# U8 O% c+ ?6 x8 T% [
lib 在项目的 src/lib 中,这里的文件主要是为视图提供包括连接网络、构造交易、获取账户、读取合约等服务。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

华胥 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    13