在长安链的社区运营中我们发现,新用户在部署长安链时,由于本地的环境各异,对快速体验测试长安链造成一些不必要的阻塞。因而我们规划在云服务器上,提供一套适配长安链的标准环境,供社区开发者对长安链进行体验及测试。
此外腾讯云Lighthouse具备低成本的特性,当社区用户有轻量级的长安链应用需要做试点和demo时,也可在利用Lighthouse低成本地实现。
本产品主要包含:一台腾讯云CVM服务器、一套长安链管理平台,一条长安链,一个CMS交互式控制台。
为方便用户使用,已将长安链内置订阅到长安链管理台内,并提供四个常用的测试合约,供新用户快速上手体验。
此外,lighthouse长安链 与长安链开源社区其他生态工具,如SDK、浏览器、CMC工具、合约IDE、Web3插件等无缝衔接,可搭配使用。
我们首先进入腾讯云Lighthouse轻量应用服务器页面,
根据你的需求选择对应的服务器进行配置。
进入Lighthouse(轻量应用服务器)控制台,在服务器模块找到自己购买的长安链服务,点击进入服务详情。
在应用管理里,找到长安链管理台应用,其中
cat /home/chainmaker/credentials.txt
序号 | 内容 | 说明 |
---|---|---|
1 | 长安链版本 | V2.3.0 |
2 | 链id | chain1 |
3 | 组织数 | 4个组织 |
4 | 节点数 | 4个共识节点 |
5 | 共识算法 | TBFT |
6 | 单区块最大交易容量 | 100笔交易 |
7 | 交易过期时长 | 600s |
8 | 交易间隔 | 10ms |
9 | 是否支持docker_VM | 支持 |
为方便用户查看,对下面要讲到的合约内容进行一个整体的描述(或规范)。
目前预先部署了3个示例合约,如下表所示:
序号 | 合约名称 | 合约功能 |
---|---|---|
1 | SaveContract | 存证合约,可保存Key-Value及描述信息 |
2 | ERC20Contract | ERC20合约,基本符合以太坊官方标准,可作为Token发布的Demo |
3 | ERC721Contract | ERC721合约,基本符合以太坊官方标准,可作为NFT发布的Demo |
函数名 | 函数类型 | 函数说明 | 入参说明 | 返回值 | 备注 |
---|---|---|---|---|---|
save | 执行 | 存证 | key:数据存储的key data:数据存储的内容 desc:数据存储的描述(可选) | 数据存储的key | 重复的key会将原数据覆盖 |
find | 查询 | 查询对象 | key:数据存储的key | 存储内容的JSON格式 | 对象结构体:
type EvidenceInstance struct {
Key string |
进行save操作,即保存对象至底链时,若保存成功会触发 保存 事件,该事件主题为:topic_save
存证合约的使用非常简单,主要包括两个方法:
合约在初始化的过程中可以设置一些基础配置,包括发行token的名称、简称、总量等信息,若不设置则会使用合约代码中默认的配置。初始化过程中涉及到的参数配置列表说明如下:
参数名 | 参数含义 | 默认值 |
---|---|---|
owner | 合约拥有者地址 | 发起合约安装的用户地址 |
totalSupply | token总供应量 | 1_000_000_000,10亿 |
decimals | token计算支持的小数点数量 | 2,表示最小支持0.01 |
name | token名称 | DEMO |
symbol | token简称 | DE |
函数名 | 函数类型 | 函数说明 | 入参说明 | 返回值 | 备注 |
---|---|---|---|---|---|
name | 查询 | 查询token名称 | 该token的名称 | 任何账号都可以查询 | |
symbol | 查询 | 查询token简称 | 该token的简称 | 任何账号都可以查询 | |
decimals | 查询 | 查询token支持小数位数 | 该token支持的小数位数 | 任何账号都可以查询 | |
totalSupply | 查询 | 查询token发行的总量 | 该token发行的总量 | 任何账号都可以查询 | |
owner | 查询 | 查询该合约的拥有者 | 该合约的拥有者 | 任何账号都可以查询 | |
balanceOf | 查询 | 查询指定用户的token数量 | owner: 指定的用户地址 | 该地址拥有的token数量 | 任何账号都可以查询 |
transfer | 执行 | 转移指定数量token给指定账号 | to: 转入的账号地址; value: 转移的token数量 | 当前账号剩余的token数量 | 该函数只能转出自己(交易发起者)的token |
transferFrom | 执行 | 替代某账号转移指定数量token给特定账号 | from: 转出的地址; to: 转入的地址; value: 转移token数量 | from账号剩余token数量 | 该函数的交易发起者必须经过from账号的授权,即approve |
approve | 执行 | 授权账号可转移指定数量的token | spender: 被授权的用户地址 value: 允许转移的token数量 | 允许转移的token数量 | 该函数重复调用会将授权的值重置 |
allowance | 查询 | 返回指定账号从特定账号授权剩余的token数量 | owner: 授权的用户地址; spender: 被授权的用户地址 | 授权剩余的token数量 | 任何账号都可以查询 |
transferOwner | 执行 | 转移当前合约的拥有者 | to: 新的拥有者地址 | 新的拥有者地址 | 只有合约拥有者才可以发起该交易 |
mint | 执行 | 给指定账号增发token | to: 增发的用户地址 value: 增发的token数量 | 增发地址的剩余token数量 | 只有合约拥有者才可以发起该交易,该合约调用会调整发行总量 |
burn | 执行 | 销毁指定数量的token | value: 销毁的token数量 | 该账号剩余token数量 | 只能销毁交易发起者账号的token |
deliver | 执行 | 给指定账号派发token | to: 派发的用户(可选,不设置则是当前账号) value: 派发的token数量 | 该账号剩余token数量 | 只有合约拥有者才可以发起该交易,该合约调用不会影响发行总量,该操作是从合约账号中将token转出 |
address | 查询 | 返回当前用户地址 | 该用户的地址 | 任何账号都可以查询 |
在长安链的docker-vm虚拟机模型中,交易发起者的地址算法暂未公开,因此需要用户通过手动调用合约中address()方法获取。
ERC20合约是一个发行token的合约,可以通过该合约进行指定token的发行操作。它的核心操作流程包括如下几个步骤:
合约在初始化的过程中可以设置一些基础配置,包括发行NFT的名称、简称等信息,若不设置则会使用合约代码中默认的配置。初始化过程中涉及到的参数配置列表说明如下:
参数名 | 参数含义 | 默认值 |
---|---|---|
name | token名称 | NFT-DEMO |
symbol | token简称 | NFDO |
函数名 | 函数类型 | 函数说明 | 入参说明 | 返回值 | 备注 |
---|---|---|---|---|---|
name | 查询 | 查询NFT名称 | 该NFT的名称 | 任何账号都可以查询 | |
symbol | 查询 | 查询NFT简称 | 该NFT的简称 | 任何账号都可以查询 | |
tokenURI | 查询 | 查询指定NFT的URI配置信息 | tokenId: NFT唯一标识 | 该NFT的URI配置信息 | 任何账号都可以查询 |
totalSupply | 查询 | 查询已发布的NFT数量 | 该NFT的数量 | 任何账号都可以查询 | |
tokenByIndex | 查询 | 查询所有NFT集合中某个序号的NFT标识 | index: 该NFT在整个列表中的序号 | 对应序号的NFT标识(tokenId) | 任何账号都可以查询 |
tokenOfOwnerByIndex | 查询 | 查询某个账号下某个序号的NFT标识 | owner: 查询的账号; index: 查询的序号 | 对应序号的NFT标识(tokenId) | 任何账号都可以查询 |
balanceOf | 查询 | 查询某个地址拥有的NFT数量 | owner: 查询的账号 | 该地址拥有的NFT数量(销毁的不计算在内) | 任何账号都可以查询 |
ownerOf | 查询 | 查询某个NFT的拥有者 | tokenId: NFT唯一标识 | 拥有该NFT的地址 | 任何账号都可以查询 |
transferFrom | 执行 | 将NFT从一个地址转移至另外的地址 | from: 转出的地址(可选,不填时为当前账号); to: 转入的地址; tokenId: NFT唯一标识 | 字符串:“success” | 若from不是该NFT的拥有者需要其拥有者进行授权 |
safeTransferFrom | 执行 | 安全地将NFT从一个地址转移至另外的地址 | from: 转出的地址(可选,不填时为当前账号); to: 转入的地址; tokenId: NFT唯一标识 data: 校验的内容,通常由to地址对应用户给出,可通过setCheckData设置 | 字符串:“success” | 若from不是该NFT的拥有者需要其拥有者进行授权 |
approve | 执行 | 授权用户可代替自己操作某个NFT | approved: 被授权的账号 tokenId: 授权的的NFT唯一标识 | 字符串:“success” | 该操作会覆盖掉之前授权的账号 |
setApprovalForAll | 执行 | 设置某个用户对自己所有token的授权状态 | operator: 授权/回收授权的账号 approved: 被授权的状态,0:不授权,1:授权 | 0:不授权,1:授权 | 该授权的优先级比approve更高 |
getApproved | 查询 | 获取某个NFT授权操作的地址 | tokenId: NFT唯一标识 | 该NFT的授权操作地址 | 任何账号都可以查询,但只可查询自己的授权情况 |
isApprovedForAll | 查询 | 获取指定用户对某操作者的授权状态 | owner : 指定的用户(可选,不填代表自己) operator : 被授权的操作地址 | 0:不授权,1:授权 | 任何账号都可以查询 |
mint | 执行 | 增发指定的NFT至某个账号 | to: 增发给的账号(可选,不填时则增发给自己) tokenId: NFT唯一标识 tokenURI: NFT的URI属性 | NFT的唯一标识(tokenId) | 任何账号都可以增发,但tokenId不能重复 |
burn | 执行 | 销毁某个指定的NFT | tokenId: NFT唯一标识 | 字符串:“success” | 该账号必须是该NFT的拥有者,授权不可以 |
setTokenURI | 执行 | 设置NFT的URI属性 | tokenId: NFT唯一标识 tokenURI: NFT的URI属性 | 字符串:“success” | 该账号必须是该NFT的拥有者,授权不可以,但为保障唯一性,不建议调用该函数 |
setCheckData | 执行 | 设置账号的check数据 | data: 设置的check数据 | 字符串:“success” | 该账号只可设置自己的data,该data供safeTransferFrom中的data校验 |
checkData | 查询 | 查询设置的check数据 | 该账号设置的check数据 | 任何账号都可以查询 | |
address | 查询 | 返回当前用户地址 | 该用户的地址 | 任何账号都可以查询 |
同ERC20合约一样,交易发起者的地址需要用户通过手动调用合约中address()方法获取。
ERC721是一个发行NFT的合约,可通过该合约发行NFT或转让NFT等操作。它的核心流程包括以下几个步骤:
默认的Lighthouse环境中并没有开放底链访问需要的端口,在不修改配置的环境下是12301/12302/12303/12304。如需要通过SDK访问底链,需要首先将端口开放。
进入腾讯云该Lighthouse的管理台,选择防火墙页面。
可以看到目前只有一些基本的端口开放了,我们关注的12301-12304并没有开放,此时点击 "添加规则" 按钮,进入规则配置页面:
按照上图填写规则即可,若想限制访问来源,即哪些IP地址可以访问该端口,可以选择 启用 复选框,填入指定的源IP:
填写完成后,点击确定按钮,则会看到新创建的规则:
此时若本地使用 telnet工具进行访问,则可以发现端口已经可正常访问:
通过WebShell登录Lighthouse服务器后,使用如下命令进入到指定组织的用户证书页面:
[lighthouse@VM-0-3-centos ~]$ cd /home/chainmaker/chain/release/chainmaker-v2.2.1-lh-org1.chainmaker.org/config/lh-org1.chainmaker.org/certs/user
[lighthouse@VM-0-3-centos user]$ ll
total 12
drwxr-xr-x 2 chainmaker chainmaker 4096 Jun 14 11:31 admin1
drwxr-xr-x 2 chainmaker chainmaker 4096 Jun 14 11:31 client1
drwxr-xr-x 2 chainmaker chainmaker 4096 Jun 14 11:31 light1
上述命令中的路径 chainmaker-v2.2.1-lh-org1.chainmaker.org 和 lh-org1.chainmaker.org中的org1代表的组织,用户可根据自己的组织进行调整,例如:org2对应调整为:
chainmaker-v2.2.1-lh-org2.chainmaker.org 和 lh-org2.chainmaker.org。
系统为每个组织的用户内置了三个用户:admin/client/light,分别代表了管理员、普通用户和轻节点用户。
用户可根据自己的需求进入到指定用户页面下载对应的证书,以admin为例:
[lighthouse@VM-0-3-centos admin1]$ cd ../
[lighthouse@VM-0-3-centos user]$ cd admin1/
[lighthouse@VM-0-3-centos admin1]$ sudo su chainmaker
[chainmaker@VM-0-3-centos admin1]$ sz *
Received - admin1.sign.crt 17.89 KB/s Spend: 0 seconds
Received - admin1.sign.key 4.43 KB/s Spend: 0 seconds
Received - admin1.tls.crt 18.36 KB/s Spend: 0 seconds
Received - admin1.tls.key 4.52 KB/s Spend: 0 seconds
特别注意的是,在下载之前需要切换为 chainmaker用户,否则会出现权限问题。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。