data-share-nft
文章目录
数据共享交换资产化
数据共享交换
基于区块链实现的数据资源合约,完成数据的共享交换.
数据资源合约在内部调用数据加工合约,数据传输合约和数据归集合约,完成数据的归集,传输,加工和展示.如果包含文件附件,返回IPFS地址.
整体步骤如下:
- 1.数据资源合约执行GetData合约方法,调用数据加工合约的Working方法
- 2.数据加工合约执行Working合约方法,调用数据传输合约的transmission方法,使用私钥对数据解密,对数据Hash校验,格式转化数据清洗等.
- 3.数据传输合约执行transmission方法,调用数据采集合约的Gather方法,采集数据,使用公钥加密
- 4.数据采集合约执行Gather方法,执行数据采集逻辑
合约标准:
必须要有以上所描述的四个合约按照合约执行顺序执行,以上四个合约除了合约内执行的方法外还应包括以下所述所有方法.
合约必须包含
- 1.获取执行步骤的方法,方法名:GetContractStep
- 2.获取资源响应格式的合约方法,方法名:GetRespFormat
- 3.获取响应数据全量数据格式的合约方法,方法名:GetFullDataFormat
- 4.获取合约请求参数格式的合约方法,方法名:GetParamsFormat
- 5.获取合约开放条件的合约方法,方法名:GetOpenCondition
- 6.数据铸造NFT的方法,方法名:MintNFT
获取执行步骤合约的方法
方法名:GetContractStep 数据共享交换使用到的合约信息,返回每个合约的节点名.链名.合约名.所属资源等参数.
|
|
例如:
|
|
获取资源响应格式的合约方法
方法名:GetRespFormat
获取合约响应的数据格式,用于说明本合约的主方法的返回格式,例如json
,string
,file
等,根据业务场景约定返回格式
响应数据全量数据格式的合约方法
方法名:GetFullDataFormat 获取合约主方法返回的数据格式结构,包含上链数据和返回的数据
|
|
statusCode
:本次处理的状态码,成功是success
,失败是error
errorMessage
:错误状态时,记录错误的信息dataFormat
:返回的数据格式,一般是json
格式onChainData
:上链的数据,使用json格式,记录上链的key和valuereturnData
:返回数据的格式,格式和dataFormat
对应,一般是json格式.
例如:
|
|
获取请求参数格式的方法
方法名:GetParamsFormat 获取合约主方法的调用参数格式
|
|
例如:
|
|
获取合约开放条件的方法
方法名:GetOpenCondition
返回合约主方法开放的条件,类型为字符串例如:获取授权或者是管理员
数据铸造NFT的方法
方法名:MintNFT
把数据内容铸造成NFT藏品,获取NFT藏品之后才可以正常调用数据资产参数如下:
tokenID
:铸造的NFT藏品ID,每个数字资产商品保持唯一,(int64类型)amount
:铸造的数量(int类型)data
:藏品内容([]byte字节数组类型) 返回值为error
错误信息字符串.
NFT资产交易
允许在同一个智能合约中无限量地重复使用同质化或者非同质化的Token,数据资源合约调用NFT合约,实现数据资源的NFT铸造基于ERC-1155合约改造,统一使用Action方法作为入口,实现NFT铸造,转移,销毁等功能
Action入口方法
方法名:Action
NFT的入口方法,action
参数标识需要执行的动作,其他参数是动作方法需要的参数
获取NFT资产的uri方法
返回一个 https://token-cdn-domain/{id}.json 字符串,id会使用tokenID 替换成64位字符串, 不够使用0补齐,类似https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json json文件内是Token的额外扩展信息,
调用Action
方法,传递参数action=uri
,具体参数如下:
|
|
例如:
|
|
铸造NFT Token的方法
为 to
账户铸造数量 amount
个的 tokenID
NFT资产
调用Action
方法,传递参数action=mint
,具体参数如下:
|
|
例如:
|
|
销毁NFT Token的方法
销毁 from
账户 amount
个 tokenID
NFT资产调用Action
方法,传递参数action=burn
,具体参数如下:
|
|
例如:
|
|
转移NFT Token的方法
将 amount
个 tokenID
从 from
账户转移到 to
账户 (安全的)
调用者必须得到授权才可以从参数 from
指定的账户转账token
如果参数 to
设定的地址为零地址,则交易必须回滚
对参数 tokenID
所指的token,如果其转出账户的余额小于参数 amount
所定义的金额,则交易必须回滚
如果转账交易出现任何其它错误,交易也必须回滚
调用Action
方法,传递参数action=safeTransferFrom
,具体参数如下:
|
|
例如:
|
|
获取账户余额的方法
获取 owner
账户中的token余额,需要授权才能查询账户余额调用Action
方法,传递参数action=balanceOf
,具体参数如下:
|
|
例如:
|
|
授权管理NFT资产方法
授权或撤销其他操作者to
管理其所有的token
调用Action
方法,传递参数action=setApprovalForAll
,具体参数如下:
|
|
例如:
|
|
获取NFT授权管理状态
owner
资产给 operator
的授权状态,返回bool值调用Action
方法,传递参数action=isApprovedForAll
,具体参数如下:
|
|
例如:
|
|
文章作者 springrain
上次更新 2023-10-17