溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用shuttle實現(xiàn)bytom上跨鏈資產(chǎn)交換

發(fā)布時間:2021-09-04 14:12:41 來源:億速云 閱讀:175 作者:chen 欄目:互聯(lián)網(wǎng)科技

本篇內(nèi)容主要講解“如何使用shuttle實現(xiàn)bytom上跨鏈資產(chǎn)交換 ”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何使用shuttle實現(xiàn)bytom上跨鏈資產(chǎn)交換 ”吧!

最近基于比原鏈上的不同資產(chǎn)交換工具shuttle非常搶眼,因為該工具不僅可以實現(xiàn)同一條鏈上的不同資產(chǎn)進行交換,還可以實現(xiàn)不同區(qū)塊鏈平臺上的多種資產(chǎn)進行交換。該工具奠定了資產(chǎn)在交易的過程中完全去中心化,無第三方介入,保證了資產(chǎn)在交換過程中的安全性和原子性。那我們來看一下這個工具到底如何使用!

該工具主要的功能是實現(xiàn)不同資產(chǎn)在比原鏈上交換,首先是在比原鏈上不同資產(chǎn)進行交換。這個主要使用幣幣交換合約來進行資產(chǎn)的交換。如果是在比原的主側(cè)鏈上進行跨鏈資產(chǎn)交換,則使用的是哈希時間鎖合約來完成兩條不同鏈上的資產(chǎn)交換。

下面我們來看一下操作的具體步驟:

第一步: 首先搭建節(jié)點環(huán)境

1.1 golang的版本高于1.12,同時設置好的$GOPATH環(huán)境目錄
1.2 啟動并配置好bytom節(jié)點,參考:bytom readme.md
1.3 源碼構(gòu)建:Shuttle仍處于測試階段,因此存儲庫代碼將經(jīng)常更改。您可以直接從源代碼構(gòu)建工具。參考下面的命令:
 $ git clone https://github.com/Bytom/shuttle.git $GOPATH/src/github.com/shuttle
 $ cd $GOPATH/src/github.com/shuttle
 $ make install

Shuttle help 相關(guān)命令如下:

 $ swap -h
 swap is a commond line client for bytom contract

 Usage:
   swap [flags]
   swap [command]

vailable Commands:
  callHTLC       call HTLC contract for asset swapping
  callTradeoff   call tradeoff contract for asset swapping
  cancelHTLC     cancel HTLC contract for asset swapping
  cancelTradeoff cancel tradeoff contract for asset swapping
  deployHTLC     deploy HTLC contract
  deployTradeoff deploy tradeoff contract
  help           Help about any command

Flags:
  -h, --help   help for swap

Use "swap [command] --help" for more information about a command.

第二步:同一條鏈上進行跨鏈資產(chǎn)交換

如果你想在單一一條鏈上交換比原資產(chǎn),不論是bytom主鏈還是vapor側(cè)鏈,都直接使用Tradeoff合約可以實現(xiàn)資產(chǎn)的交換,整個交換流程圖如下:

如何使用shuttle實現(xiàn)bytom上跨鏈資產(chǎn)交換

首先我們啟動bytom節(jié)點,為了測試,你可以啟動solnet節(jié)點:

$ 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

搭建完測試節(jié)點以后,可以在區(qū)塊鏈上創(chuàng)建賬戶,發(fā)行資產(chǎn)(issue asset)用來測試

創(chuàng)建賬戶參考

發(fā)行資產(chǎn)參考

例如:在bytom主鏈上,賬戶A有200BTC,賬戶B有10個BTM,他們就可以是用shuttle工具進行交換。

####2.1 下面正式部署 tradeoff合約(下面是合約部署相關(guān)命令以及相關(guān)參數(shù))

$ swap deployTradeoff -h
deploy tradeoff contract

Usage:
swap deployTradeoff <accountID> <password> [contract flags(paramenters and locked value)] [txFee flag] [URL flags(ip and port)] [flags]

Flags:
     --amountLocked uint       tradeoff contract locked value with amount //鎖定資產(chǎn)的數(shù)量
     --amountRequested uint    tradeoff contract paramenter with requested amount  //鎖定需要兌換的資產(chǎn)數(shù)量
     --assetLocked string      tradeoff contract locked value with assetID //資產(chǎn)ID
     --assetRequested string   tradeoff contract paramenter with requested assetID //兌換的資產(chǎn)ID
     --cancelKey string        tradeoff contract paramenter with seller pubkey for cancelling the contract //解鎖合約需要用到的pubkey
 -h, --help                    help for deployTradeoff
     --ip string               network address (default "127.0.0.1")
     --port string             network port (default "9888")
     --seller string           tradeoff contract paramenter with seller control-program
     --txFee uint              contract transaction fee (default 40000000)

下面是實例化部署合約的過程:

$ swap deployTradeoff 10CJPO1HG0A02 12345 --amountLocked 20000000000 --amountRequested 1000000000 --assetLocked bae7e17bb8f5d0cfbfd87a92f3204da082d388d4c9b10e8dcd36b3d0a18ceb3a --assetRequested ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff --cancelKey 3e5d7d52d334964eef173021ef6a04dc0807ac8c41700fe718f5a80c2109f79e --seller 00145dd7b82556226d563b6e7d573fe61d23bd461c1f --txFee 40000000
--> contractUTXOID: 34996b0838108de8c614bc018e8fdbbfc08a47ffbe0fd6d7f41892b90de3999f

合約部署好了以后,2.5 分鐘后,比原鏈上的一個新的區(qū)塊被礦工打包后,部署的合約就可以被認證。

2.2 調(diào)用tradeoff合約(下面是調(diào)用合約的命令)
$ swap callTradeoff -h
call tradeoff contract for asset swapping

Usage:
swap callTradeoff <accountID> <password> <buyer-program> <contractUTXOID> [txFee flag] [URL flags(ip and port)] [flags]

Flags:
-h, --help          help for callTradeoff
  --ip string     network address (default "127.0.0.1")
  --port string   network port (default "9888")
  --txFee uint    contract transaction fee (default 40000000)

調(diào)用合約實例化參數(shù)如下:

 $ swap callTradeoff 10CKAD3000A02 12345 00140fdee108543d305308097019ceb5aec3da60ec66 34996b0838108de8c614bc018e8fdbbfc08a47ffbe0fd6d7f41892b90de3999f
 --> txID: 55e43274d2d92504a903a13e3f6517d63434fc19a2fa0e1fc0a9a5c8c75e8f6c

調(diào)用完以后,當交易在新的區(qū)塊中被確認,整個資產(chǎn)交換過程就完成,如下圖:

如何使用shuttle實現(xiàn)bytom上跨鏈資產(chǎn)交換

交換完成后,現(xiàn)在賬戶賬戶A有200個BTC,賬戶B有10個BTM。

2.3 取消tradeoff合約(下面是取消tradeoff合約的相關(guān)命令)

如果有人想取消tradeoff合約交易,可以調(diào)用該命令取消,如下:

$ swap cancelTradeoff -h
cancel tradeoff contract for asset swapping

Usage:
swap cancelTradeoff <accountID> <password> <redeem-program> <contractUTXOID> [txFee flag] [URL flags(ip and port)] [flags]

Flags:
-h, --help          help for cancelTradeoff
   --ip string     network address (default "127.0.0.1")
   --port string   network port (default "9888")
   --txFee uint    contract transaction fee (default 40000000)

取消tradeoff合約的實例化如下:

 $ swap deployTradeoff 10CJPO1HG0A02 12345 --amountLocked 20000000000 --amountRequested 1000000000 --assetLocked bae7e17bb8f5d0cfbfd87a92f3204da082d388d4c9b10e8dcd36b3d0a18ceb3a --assetRequested ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff --cancelKey 3e5d7d52d334964eef173021ef6a04dc0807ac8c41700fe718f5a80c2109f79e --seller 00145dd7b82556226d563b6e7d573fe61d23bd461c1f --txFee 40000000
  --> contractUTXOID: e898ea907f8586b3211a46b69d0cddd363f8a850f559656570eb6afc6ac382c5

 $ swap cancelTradeoff 10CJPO1HG0A02 12345 00145b0a81adc5c2d68a9967082a09c96e82d62aa058  e898ea907f8586b3211a46b69d0cddd363f8a850f559656570eb6afc6ac382c5  
 --> txID: 0f75db743196b8b2e514c49d6483dfba9bd5ab8e913a7559ecaea0324977313f

示例圖如下:

如何使用shuttle實現(xiàn)bytom上跨鏈資產(chǎn)交換

上面整個流程就是在同一條鏈上不同資產(chǎn)進行交換的整個過程,下面我們來看一下不同鏈上的兩個資產(chǎn)進行交換,假設以bytom和vapor為例。

第三步:不同鏈上資產(chǎn)進行交換

你可以使用該工具在bytom和vapor上交換資產(chǎn):

如何使用shuttle實現(xiàn)bytom上跨鏈資產(chǎn)交換

3.1 搭建并啟動bytom和vapor節(jié)點

為了方便測試。你可以啟動bytom和vapor的solonet節(jié)點

啟動bytom solonet 節(jié)點:

$ 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

啟動vapor solonet 節(jié)點:

$ vapord init --chain_id=solonet --home $HOME/bytom/vapor-solonet # init vapor solonet node
$ vapord node --home $HOME/bytom/vapor-solonet --mining           # launch vapor solonet node and start mining
3.2 部署HTLC合約(合約的部署命令如下)
 $ swap deployHTLC -h
 deploy HTLC contract

 Usage:
 swap deployHTLC <accountID> <password> [contract flags(paramenters and locked value)] [txFee flag] [URL flags(ip and port)] [flags]

 Flags:
  --amountLocked uint    HTLC contract locked value with amount
  --assetLocked string   HTLC contract locked value with assetID
  --blockHeight uint     HTLC contract locked value with blockHeight
  --hash string          HTLC contract locked value with hash
-h, --help                 help for deployHTLC
  --ip string            network address (default "127.0.0.1")
  --port string          network port (default "9888")
  --recipient string     HTLC contract paramenter with recipientPublicKey
  --sender string        HTLC contract paramenter with sender PublicKey
  --txFee uint           contract transaction fee (default 40000000)

部署HTLC合約的實例參數(shù)如下:

 $ swap deployHTLC 11BB7TC8G0A02 12345 --sender 7262584844d4c14f512d1b6c9838e62c320e1d7887e7185bfea920c72a944e44 --recipient 562013c2f9082f1db52a2571034428921dd6eec8c010c2b2387f5b6125ff4aa7 --blockHeight 1200 --hash 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 --assetLocked bae7e17bb8f5d0cfbfd87a92f3204da082d388d4c9b10e8dcd36b3d0a18ceb3a --amountLocked 20000000000
 --> contractUTXOID: e1b104a03f4135b45d1c4c5fabbdca4dd0555653a588b71d790d45c4ffb2c50e
3.3 調(diào)用HTLC合約
$ swap callHTLC -h
call HTLC contract for asset swapping

Usage:
swap callHTLC <accountID> <password> <buyer-program> <preimage> <contractUTXOID> [txFee flag] [URL flags(ip and port)] [flags]

Flags:
 -h, --help          help for callHTLC
   --ip string     network address (default "127.0.0.1")
   --port string   network port (default "9888")
   --txFee uint    contract transaction fee (default 40000000)

調(diào)用HTLC合約的實力化參數(shù)如下:

$ swap callHTLC 11BB86V300A04 12345 0014230cb75fcfcc70c580ce7f1d21c1e374d27334a8 68656c6c6f e1b104a03f4135b45d1c4c5fabbdca4dd0555653a588b71d790d45c4ffb2c50e
--> txID: df57b7906684e3d85adf59073ccbc0a3c5114b165626e9791f3269e9e57c319e

實際的交換過程如下: 如何使用shuttle實現(xiàn)bytom上跨鏈資產(chǎn)交換

3.4 取消HTLC合約(命令參數(shù)如下)
$ swap cancelHTLC -h
cancel HTLC contract for asset swapping

Usage:
swap cancelHTLC <accountID> <password> <redeem-program> <contractUTXOID> [txFee flag] [URL flags(ip and port)] [flags]

Flags:
-h, --help          help for cancelHTLC
  --ip string     network address (default "127.0.0.1")
  --port string   network port (default "9888")
  --txFee uint    contract transaction fee (default 40000000)

取消HTLC合約的實例化參數(shù)如下:

$ swap deployHTLC 11BB7TC8G0A02 12345 --sender 7262584844d4c14f512d1b6c9838e62c320e1d7887e7185bfea920c72a944e44 --recipient 562013c2f9082f1db52a2571034428921dd6eec8c010c2b2387f5b6125ff4aa7 --blockHeight 1200 --hash 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 --assetLocked bae7e17bb8f5d0cfbfd87a92f3204da082d388d4c9b10e8dcd36b3d0a18ceb3a --amountLocked 20000000000
--> contractUTXOID: 68ed6b948b93544ea135482f1acd93d6b10cdc88f52d44133d264a5ee86b1ebd
$ swap cancelHTLC 11BB7TC8G0A02 12345 001434fec270871c1f3420db85831f59511b2dd2a026 68ed6b948b93544ea135482f1acd93d6b10cdc88f52d44133d264a5ee86b1ebd
--> txID: c70a467e94b287d29c6d91a2cb6f8ef3c7ef4dba315d99acf2dc9ff698996270

示例圖如下: 如何使用shuttle實現(xiàn)bytom上跨鏈資產(chǎn)交換

取消HTLC合約以后,a4發(fā)起HTLC合約兌換的資產(chǎn)自動返回賬戶。 這些都是a賬戶在bytom上的操作,a5賬戶同時在側(cè)鏈上實現(xiàn)相同的操作就可以了。

到此,相信大家對“如何使用shuttle實現(xiàn)bytom上跨鏈資產(chǎn)交換 ”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI