使用shuttle实现bytom上跨链资产交换

最近基于比原链上的不同资产交换工具非常抢眼,因为该工具不仅可以实现同一条链上的不同资产进行交换,还可以实现不同区块链平台上的多种资产进行交换 。该工具奠定了资产在交易的过程中完全去中心化,无第三方介入,保证了资产在交换过程中的安全性和原子性 。那我们来看一下这个工具到底如何使用!
该工具主要的功能是实现不同资产在比原链上交换,首先是在比原链上不同资产进行交换 。这个主要使用币币交换合约来进行资产的交换 。如果是在比原的主侧链上进行跨链资产交换,则使用的是哈希时间锁合约来完成两条不同链上的资产交换 。
下面我们来看一下操作的具体步骤:
第一步: 首先搭建节点环境 1.1 的版本高于1.12,同时设置好的$环境目录 1.2 启动并配置好bytom节点,参考:bytom .md 1.3 源码构建:仍处于测试阶段,因此存储库代码将经常更改 。您可以直接从源代码构建工具 。参考下面的命令:
$ git clone https://github.com/Bytom/shuttle.git $GOPATH/src/github.com/shuttle$ cd $GOPATH/src/github.com/shuttle$ make install
help 相关命令如下:
$ swap -hswap is a commond line client for bytom contractUsage:swap [flags]swap [command]vailable Commands:callHTLCcall HTLC contract for asset swappingcallTradeoffcall tradeoff contract for asset swappingcancelHTLCcancel HTLC contract for asset swappingcancelTradeoff cancel tradeoff contract for asset swappingdeployHTLCdeploy HTLC contractdeployTradeoff deploy tradeoff contracthelpHelp about any commandFlags:-h, --helphelp for swapUse "swap [command] --help" for more information about a command.
第二步:同一条链上进行跨链资产交换
如果你想在单一一条链上交换比原资产,不论是bytom主链还是vapor侧链,都直接使用合约可以实现资产的交换,整个交换流程图如下:

使用shuttle实现bytom上跨链资产交换

文章插图
首先我们启动bytom节点,为了测试,你可以启动节点:
$ bytomd init --chain_id=solonet --home $HOME/bytom/solonet # init bytom solonet node$ bytomd node --home $HOME/bytom/solonet --mining# launch bytom solonet node and start mining
搭建完测试节点以后,可以在区块链上创建账户,发行资产(issue asset)用来测试
创建账户参考
发行资产参考
例如:在bytom主链上,账户A有,账户B有10个BTM,他们就可以是用工具进行交换 。
####2.1 下面正式部署 合约(下面是合约部署相关命令以及相关参数)
$ swap deployTradeoff -hdeploy tradeoff contractUsage:swap deployTradeoff[contract flags(paramenters and locked value)] [txFee flag] [URL flags(ip and port)] [flags]Flags:--amountLocked uinttradeoff contract locked value with amount //锁定资产的数量--amountRequested uinttradeoff contract paramenter with requested amount//锁定需要兑换的资产数量--assetLocked stringtradeoff contract locked value with assetID //资产ID--assetRequested stringtradeoff contract paramenter with requested assetID //兑换的资产ID--cancelKey stringtradeoff contract paramenter with seller pubkey for cancelling the contract //解锁合约需要用到的pubkey-h, --helphelp for deployTradeoff--ip stringnetwork address (default "127.0.0.1")--port stringnetwork port (default "9888")--seller stringtradeoff contract paramenter with seller control-program--txFee uintcontract transaction fee (default 40000000)
下面是实例化部署合约的过程:
$ swap deployTradeoff 10CJPO1HG0A02 12345 --amountLocked 20000000000 --amountRequested 1000000000 --assetLocked bae7e17bb8f5d0cfbfd87a92f3204da082d388d4c9b10e8dcd36b3d0a18ceb3a --assetRequested ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff --cancelKey 3e5d7d52d334964eef173021ef6a04dc0807ac8c41700fe718f5a80c2109f79e --seller 00145dd7b82556226d563b6e7d573fe61d23bd461c1f --txFee 40000000--> contractUTXOID: 34996b0838108de8c614bc018e8fdbbfc08a47ffbe0fd6d7f41892b90de3999f