中移链链账户是在中移链区块链上注册的用户标识,每个账户可以持有一定数量的资源。CPU资源是账户用于执行智能合约的计算能力配额,决定了账户可以使用的CPU计算时间。NET资源是账户的带宽配额,用于处理事务的传输和网络通信。RAM资源用于存储智能合约执行过程中状态库数据。这些资源、链账户和智能合约构成了整个中移链的生态环境。
01
创建链账户
在中移链中,通过椭圆曲线加密算法生成公私钥对,这是一种非对称加密算法,它使用两个不同的密钥(公钥和私钥)进行加密和解密。所以在创建账户前,首先要生成账户的公私钥对。公私钥对用于身份验证和交易签名,以便执行智能合约。在EOS中,一个账户可以拥有多个公钥,而每个公钥都可以授权给不同的操作或合约执行权限。与之相对应的是私钥,它是保密的,并且只有持有者才能访问。私钥负责对交易进行签名和身份验证,确保只有私钥的持有者才能执行特定操作。因此,私钥必须妥善保管,以防止未经授权的人员访问你的账户并进行非法操作。
确认公私钥对并妥善保存后,在BSN开放联盟链后台中找到链账户管理,点击左上角的创建链账户。
链类型选择中移链。中移链默认账户名称为12位(允许字符a~z、1~5)。
在ActiveKey中输入生成的公钥,并点击确认创建,即可完成创建。(注:公私钥也可以点击在线生成按钮下载保存)
创建完成后,可以在链账户管理中看到创建的链账户。
02
链账户的主要资源
在中移链中,链账户主要包含CPU、RAM和NET三种资源。CPU资源是用于执行智能合约的计算能力,RAM资源用于存储智能合约和其它数据,NET资源则是用于处理网络通信。每个中移链账户需要购买这些资源才能够在区块链上执行智能合约。
中移链查询接口网关地址/api/[项目id]/rpc/getAccount可以获取账户的信息如下:
{
"account_name": "testaccount1",
"head_block_num": 307847, # 区块高度
"privileged": false, # 是否为超级账户
"created": "2021-12-28T02:08:41.500", # 账户创建时间
"core_liquid_balance": "5.3960 SYS", # 可用余额
"ram_quota": 401417, # RAM总量 byte : 是实际买的RAM + 赠送的 ram_gift_bytes (1400)
"net_weight": 200000, # 网络带宽资源权重
"cpu_weight": 200000, # cpu资源权重
"net_limit": {
"used": 70142, # 已用net
"available": 36168601, # 可用余额net 单位byte
"max": 36238743, # 总net 值 单位byte
"current_used": 21807
},
"cpu_limit": { # 账户cpu使用信息
"used": 6239,
"available": 13817727,
"max": 13823966,
"current_used": 1940
},
"ram_usage": 383920, # RAM已用 byte
"permissions": [{ # 权限相关信息
"perm_name": "active",
"parent": "owner",
"required_auth": {
"threshold": 1,
"keys": [{
"key": "EOS6***********",
"weight": 1
}
],
"accounts": [],
"waits": []
}
},{
*******
],
"total_resources": { # 总资源
"owner": "testaccount1",
"net_weight": "20.0000 SYS",
"cpu_weight": "20.0000 SYS",
"ram_bytes": 400017 # 实际购买的RAM 大小
},
"self_delegated_bandwidth": null, # 为自己抵押的资源
"refund_request": null, # 正在赎回的资源
"voter_info": null, # 投票的信息
}
从接口返回信息可以看到,每个链账户都可以获得一定的CPU、NET和RAM资源。用户可以在中移链开放联盟链中通过分配资源功能购买资源。
03
链账户、合约与资源关系介绍
链账户和智能合约是中移链区块链平台的两个核心概念,它们共同构建了中移链生态系统的基石。
智能合约是在中移链区块链上执行的自动化合约。它是一段由代码编写的程序,包含了特定条件和规则。在中移链网络中,用户可以使用C++和JavaScript来编写智能合约,最终会编译为 WebAssembly(Wasm)的二进制文件格式进行执行。编写完合约后,用户需要通过链账户来将智能合约部署到链上且一个链账户只能部署一个合约,这个链账户将成为合约的唯一标识,并作为存储合约的代码和数据的标识。在部署智能合约时,需要使用链账户的私钥进行数字签名和身份验证以及将合约的二进制文件和相关的部署参数发送到区块链网络上。
RAM、CPU和NET是中移链中不可或缺的三个资源,它们为智能合约提供了必要的支持和保障,同时也为链账户提供了足够的容量和计算能力,从而推动整个生态系统的发展和扩张。
中移链账户需要使用RAM来存储合约执行过程中各种类型的数据和状态库,例如:
(1)账户数据记录,如账户的余额、交易记录、授权信息、公钥和权限等;
(2)合约状态信息,如存储数据的键值对、智能合约的状态和配置信息;
每个中移链账户需要购买足够的RAM来支持其合约执行的需要,否则将无法写入新的数据(但可以通过删除智能合约中状态数据库中的数据从而清理出可用空间)。CPU资源用于执行智能合约,而带宽资源NET则用于将交易和数据传输到链上。CPU资源的消耗取决于合约执行的复杂性和执行时间,而NET资源的消耗取决于合约执行事务的大小。链上越活跃的交易越多,CPU和NET就越容易被消耗。CPU、NET资源是抵押型的,如果一个账户的CPU资源或NET资源配额不足,该账户的合约执行速度将受到限制,无法执行新的合约以及发送事务,直到资源被线性释放或重新增加。通过BSN开放联盟链的控制台可以方便看到当前资源的消耗情况。
04
参考资料
[1]BSN开放联盟链:
https://opb.bsnbase.com/main/index
[2]官方EOSIO账号和权限介绍:
https://developers.eos.io/welcome/latest/protocol-guides/accounts_and_permissions
[3]官方EOSIO交易介绍:
https://developers.eos.io/welcome/latest/protocol-guides/transactions_protocol
[4]官方EOSIO智能合约介绍:
https://developers.eos.io/welcome/latest/smart-contract-guides/index
[5]官方EOSIO资源模块介绍:
https://developers.eos.io/welcome/latest/resources/index
电脑访问DDC网络门户
ddc.bsnbase.com
-END-