资讯专栏INFORMATION COLUMN

比原链合约入门教程

brianway / 452人阅读

摘要:比原项目仓库地址地址一合约简述是的一种智能合约语言,是一门声明性谓词语言。详细说明请参考官方合约相关介绍。编译合约,返回结果便是可锁定的合约。三解锁合约流程合约交易被区块打包成功之后,可以查看具体的合约交易内容,找到对应的。

比原项目仓库:

Github地址:https://github.com/Bytom/bytom

Gitee地址:https://gitee.com/BytomBlockc...

一、合约简述

equity是bytom的一种智能合约语言,是一门声明性谓词语言。详细说明请参考官方equity合约相关介绍。

二、锁定合约流程 1、合约编写

合约的编写可以通过参考合约模板来进行构造,如果需要更进一步的了解,可以阅读一下合约相关的说明文档。以典型的锁定publickey合约为例,其合约代码如下:

contract LockWithPublicKey(publicKey: PublicKey) locks locked { clause unlockWithSig(sig: Signature) { verify checkTxSig(publicKey, sig) unlock locked } }

2、编译合约

编译合约的工具暂未提供,建议使用api调用的方式来编译合约。调用的方式可以使用 curl 命令行 或 postman 工具等。

curl 调用方式如下:

curl -X POST http://localhost:9888/create-key -d "{"alias": "alice", "password": "123456"}"

postman 需要到官网下载工具:

https://www.getpostman.com/

1)bytomd默认启动或开启auth认证,需要通过curl的方式调用API接口 获取access toekn

curl -X POST http://localhost:9888/create-access-token -d "{"id":"token1"}"

返回结果如下:

{ "token": "token1:1fee70f537128a201338bd5f25a3adbf33dad02eae4f4c9ac43f336a069df8f3", "id": "token1", "created_at": "2018-03-20T18:56:01.043919771+08:00" }

2)选择 basic auth 认证方式,填入 access-token 的用户名和密码,即上述返回结果的 token1 和 1fee70f537128a201338bd5f25a3adbf33dad02eae4f4c9ac43f336a069df8f3

3)如果合约参数包含类型PublicKey,便需要获取合约参数 PublicKey, publicKey可通过API接口获取。这里需要将结果保存下来,以后解锁合约的时候需要用到 root_xpub 和 pubkey对应的 derivation_path。

4)编译合约,返回结果program 便是可锁定的合约。(直接编译合约产生的是合约执行步骤,如果部署这样的合约,用户可以直接构造对应的参数便能解锁)

3、构建锁定合约交易

下面表示锁定 1000 个 777e3586d2ec47c4974d262e0ff86fd3c1c063d242d32bdef71d6d16eed6763e 类型的资产到合约 204e925f0fcc2f2618d96b7a3dce2aad28e60ab3339377760d48aea8ae8169ae417403ae7cac00c0 之中。具体内容参考构建交易的wiki: https://github.com/Bytom/byto...

4、签名交易

具体内容参考签名交易的wiki:https://github.com/Bytom/byto...

5、提交交易

具体方式参考提交交易的wiki:https://github.com/Bytom/byto...

一旦合约交易打包成功,这样合约交易便发送成功了。

三、解锁合约流程

1、合约交易被区块打包成功之后,可以查看具体的合约交易内容,找到对应的outputID。

其中ID字段便表示 outputID

2、根据outputID通过list-unspent-outputs 接口API 查找合约的UTXO,查看合约锁定的资产类型和数量是否匹配

3、构建解锁合约交易,解锁clause unlockWithSig 的参数为 Signature, 但是签名结果只能在 sign-transaction 成功之后才能得到,所以我们只需构建完成签名参数即可。于之前构建的publicKey 为 4e925f0fcc2f2618d96b7a3dce2aad28e60ab3339377760d48aea8ae8169ae41,那么签名参数为root_xpub 和 derivation_path,对应的值分别为: "dc903a862a14966d47dc6bc935c687c6cccb7a8f9c70f13bb82a41a0fe2696596cb141ff1840f90c75f8f25099f0dc50e005e1e36817d184b2b1eb1354b61575" 和 [ "010400000000000000", "0100000000000000" ] 。 其结构如下:(具体字段可参考官方智能合约文档说明)

4、签名交易,具体内容参考签名交易的wiki:https://github.com/Bytom/byto...

5、提交交易,具体方式参考提交交易的wiki:https://github.com/Bytom/byto...

解锁合约交易打包成功之后,根据 outputID 通过list-unspent-outputs 接口API 查找原来的合约 UTXO,将显示为空,否则合约交易解锁失败。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24212.html

相关文章

  • BUTXO详解

    摘要:比原的价值转移是通过转账实现的。由于的无状态,所以在一定程度上增强了用户的匿名性。跟模型比,这是比原链的最大优势。此外,计算是在链外的,交易本身既是结果也是证明。模型是无状态的,更容易并发处理。 showImg(https://segmentfault.com/img/bVbpJPZ?w=900&h=500); 在比原链中,每个交易消耗之前交易生成的BUTXO 然后生成新的 BUTXO...

    Rocture 评论0 收藏0
  • 原链设计思考: 扩展性UTXO模型

    摘要:的起源来自高明的中本聪中本聪对比特币的设计,让整个世界进入了数字货币时代。比原链的思考马克思哲学的否定之否定规律,事物的发展变化是螺旋式上升的。 用户模型是比原链在最初就需要确定的重要数据结构, 团队的选择还是聚焦在两种典型的模型系统中,Account模型和UTXO模型,和其他大多数区块链设计一样, 选择了模型就决定了协议层的重要实现,两种模型各有利弊,不同区块链针对想聚焦的场景自身会...

    Vicky 评论0 收藏0
  • 人人都应学习的公链知识——比原总体架构

    摘要:揭秘区块链技术从入门到精通比原链整体设计架构解读视频链接优酷视频腾讯视频本文将会给大家介绍一下比原链总体的技术架构。共识层确认一个块是否合法。区块同步又称为被动区块同步,如果发现存在区块高度高于自己的其他节点时,不断请求区块同步。 showImg(https://segmentfault.com/img/bVbecEK);【揭秘区块链技术从入门到精通】比原链整体设计&架构解读视频链接:...

    iOS122 评论0 收藏0
  • 调用Bytom Chrome插件钱包开发Dapp

    摘要:流程总结就是下载安装插件钱包,如果自己的不需要跳过这一步。然后将编译后的合约参数配置在的配置文件,如下图全红部分是测试网合约配置参数调用插件钱包。开发出优秀的应用。 安装使用插件钱包 1. 打开Google浏览器的应用商店,搜索Bystore showImg(https://segmentfault.com/img/bVbq0Ol?w=2554&h=1312); 下载链接:http:/...

    Mike617 评论0 收藏0
  • 原链Bytom错误码一览

    摘要:错误编号内容注释非比原标准错误请求超时非法的请求体为网络错误编号内容注释区块链网络类型不匹配是签名相关的错误编号内容注释需要签名的个数超过实际需求签名的个数签名格式错误缺少主公钥主公钥重复为交易相关的错误构建交易错误编号内容注释资产余额不 0XX API错误 编号 内容 注释 BTM000 Bytom API Error 非比原标准错误 BTM001 Request t...

    Nosee 评论0 收藏0

发表评论

0条评论

brianway

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<