Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
最近基于比原链上的不同资产交换工具shuttle非常抢眼,因为该工具不仅可以实现同一条链上的不同资产进行交换,还可以实现不同区块链平台上的多种资产进行交换。该工具奠定了资产在交易的过程中完全去中心化,无第三方介入,保证了资产在交换过程中的安全性和原子性。那我们来看一下这个工具到底如何使用!
0 Z" D+ u- k! a0 e  c$ x该工具主要的功能是实现不同资产在比原链上交换,首先是在比原链上不同资产进行交换。这个主要使用币币交换合约来进行资产的交换。如果是在比原的主侧链上进行跨链资产交换,则使用的是哈希时间锁合约来完成两条不同链上的资产交换。0 k8 o1 a& a( L( T# E, F1 g0 t( B7 x
下面我们来看一下操作的具体步骤:
  V4 F5 m' L6 w( y; ^8 O( `4 M第一步: 首先搭建节点环境
  N% H2 k/ f, F9 }9 q1.1 golang的版本高于1.12,同时设置好的$GOPATH环境目录8 P# H+ I. p; A1 I  l
1.2 启动并配置好bytom节点,参考:bytom readme.md( C8 `1 e5 }, p' }
1.3 源码构建:Shuttle仍处于测试阶段,因此存储库代码将经常更改。您可以直接从源代码构建工具。参考下面的命令:+ n" r7 m4 u1 @5 H7 h
$ git clone https://github.com/Bytom/shuttle.git $GOPATH/src/github.com/shuttle; a, \; X8 p, G4 R6 Z" F
$ cd $GOPATH/src/github.com/shuttle4 ]8 Z- q7 w1 C) I% q
$ make install" x5 G! M( Z7 X; o
Shuttle help 相关命令如下:' B; t; }3 B' n' P; F& ~
$ swap -h. e9 q1 U2 k" T4 @' ]8 K9 d% X
swap is a commond line client for bytom contract0 J( O; G: _: p0 c  z9 D6 e' z
Usage:
+ G# ~" W0 E; B3 N6 x- a8 ^   swap [flags]8 }5 {2 B8 \, \  @, ?! [
   swap [command]
1 u# g; C" H: m9 Xvailable Commands:* X7 U, D. a1 s2 T% }
  callHTLC       call HTLC contract for asset swapping+ w% C: _* m' v0 R
  callTradeoff   call tradeoff contract for asset swapping
! V( R: ~8 q; o  _  o, o. z  cancelHTLC     cancel HTLC contract for asset swapping* ^8 X. O  T+ v& X- m( ^
  cancelTradeoff cancel tradeoff contract for asset swapping. G. |# A5 c& x9 w6 U. C1 q) k3 M# g
  deployHTLC     deploy HTLC contract
- q! A1 N. N0 z# E  deployTradeoff deploy tradeoff contract# u  o; [; B% f" C
  help           Help about any command
7 ]/ A4 {5 l4 Z6 Z& VFlags:
6 E: A% D9 V5 k# y1 S  s; m+ A6 U  -h, --help   help for swap
( P2 X, [/ z* V* OUse "swap [command] --help" for more information about a command.. H2 F9 s! J) P' Y5 j) U$ o+ a
第二步:同一条链上进行跨链资产交换& D7 k+ n9 A5 b2 _+ m/ `
如果你想在单一一条链上交换比原资产,不论是bytom主链还是vapor侧链,都直接使用Tradeoff合约可以实现资产的交换,整个交换流程图如下:% @! b$ I/ d& w* c
* r7 U# ~+ V' ~# ?- q, T( E! [
首先我们启动bytom节点,为了测试,你可以启动solnet节点:
. s* G$ [8 i1 d0 _% I3 V, `0 T, |$ bytomd init --chain_id=solonet --home $HOME/bytom/solonet # init bytom solonet node% m5 w  {$ [% A0 r. B9 K
$ bytomd node --home $HOME/bytom/solonet --mining           # launch bytom solonet node and start mining, I" m% a+ k1 b( P/ p* @
搭建完测试节点以后,可以在区块链上创建账户,发行资产(issue asset)用来测试8 G: f! |6 d4 d
创建账户参考+ j, J& s' _- w5 R6 @& K
发行资产参考
1 e6 J9 j" a# F/ y1 ^+ p: ~例如:在bytom主链上,账户A有200BTC,账户B有10个BTM,他们就可以是用shuttle工具进行交换。& E; W( s" K/ w5 H
####2.1 下面正式部署 tradeoff合约(下面是合约部署相关命令以及相关参数)" H. e. U; D1 |& j$ w
$ swap deployTradeoff -h
7 X) c& q2 h3 w  Q; a' \( F9 Pdeploy tradeoff contract
  G9 W5 L- P% c$ P/ LUsage:
9 N/ M2 g% u# a4 e  a. uswap deployTradeoff   [contract flags(paramenters and locked value)] [txFee flag] [URL flags(ip and port)] [flags]# |7 @% |1 {5 j$ F/ l2 f
Flags:- I3 U, k  X) o1 h
     --amountLocked uint       tradeoff contract locked value with amount //锁定资产的数量2 X) n$ e5 E) X5 H( y  c4 Y" P
     --amountRequested uint    tradeoff contract paramenter with requested amount  //锁定需要兑换的资产数量
: d" W9 X' D1 H1 i1 F     --assetLocked string      tradeoff contract locked value with assetID //资产ID
+ N4 m1 ]" b/ _- m     --assetRequested string   tradeoff contract paramenter with requested assetID //兑换的资产ID/ C9 a1 l. V* j- b8 q8 H# D- J* T
     --cancelKey string        tradeoff contract paramenter with seller pubkey for cancelling the contract //解锁合约需要用到的pubkey. i8 W6 P  ^, s; x: x
-h, --help                    help for deployTradeoff
2 L0 Q4 O: e4 G! |     --ip string               network address (default "127.0.0.1")
/ \' \9 ?  w5 W& ]2 i/ Q     --port string             network port (default "9888")
6 @0 I) R4 l* e) l9 V: o6 q     --seller string           tradeoff contract paramenter with seller control-program
2 |( W8 k  W) x+ g9 u  x     --txFee uint              contract transaction fee (default 40000000)( h0 O: Y5 P% o! U9 `8 x  Q- {# ~
下面是实例化部署合约的过程:
0 t$ s5 J, P" f2 Z$ swap deployTradeoff 10CJPO1HG0A02 12345 --amountLocked 20000000000 --amountRequested 1000000000 --assetLocked bae7e17bb8f5d0cfbfd87a92f3204da082d388d4c9b10e8dcd36b3d0a18ceb3a --assetRequested ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff --cancelKey 3e5d7d52d334964eef173021ef6a04dc0807ac8c41700fe718f5a80c2109f79e --seller 00145dd7b82556226d563b6e7d573fe61d23bd461c1f --txFee 40000000
. C2 a5 S! E" p5 Z7 L+ g--> contractUTXOID: 34996b0838108de8c614bc018e8fdbbfc08a47ffbe0fd6d7f41892b90de3999f
: J" E* h8 a% W5 l合约部署好了以后,2.5 分钟后,比原链上的一个新的区块被矿工打包后,部署的合约就可以被认证。
3 |8 c- ]! S1 }* k5 [" L2.2 调用tradeoff合约(下面是调用合约的命令)9 u  X5 i5 F/ b
$ swap callTradeoff -h" Q" B, I0 x* V) m
call tradeoff contract for asset swapping& |* L' p& T3 O4 n
Usage:
3 e$ ~* i) L9 P5 F- P  u. I* ]swap callTradeoff     [txFee flag] [URL flags(ip and port)] [flags]
6 X) D! O5 e# ]+ M! XFlags:
5 X( \# c9 b6 W3 }* I-h, --help          help for callTradeoff8 D% r9 d" s$ F
  --ip string     network address (default "127.0.0.1"). ?5 z9 O( @) l/ c& e2 B
  --port string   network port (default "9888")
! K) D* n2 e. i+ g  G  --txFee uint    contract transaction fee (default 40000000)
" u& p1 v) k0 f+ X' b& f调用合约实例化参数如下:; E) @# u" B$ E! R* d& B# h
$ swap callTradeoff 10CKAD3000A02 12345 00140fdee108543d305308097019ceb5aec3da60ec66 34996b0838108de8c614bc018e8fdbbfc08a47ffbe0fd6d7f41892b90de3999f
. @$ Q- i8 u6 o/ i% p- `6 c --> txID: 55e43274d2d92504a903a13e3f6517d63434fc19a2fa0e1fc0a9a5c8c75e8f6c
. M3 S9 h* i9 S调用完以后,当交易在新的区块中被确认,整个资产交换过程就完成,如下图:! ]# b8 l0 C. n- G5 Q0 j1 E+ u- d
5 Y# B5 J. \' @# y0 c: m
交换完成后,现在账户账户A有200个BTC,账户B有10个BTM。7 a# g" H$ }3 R; s+ t& C, @
2.3 取消tradeoff合约(下面是取消tradeoff合约的相关命令)
) q5 }' Q) Q  i* w如果有人想取消tradeoff合约交易,可以调用该命令取消,如下:
% k& k" ]& ^- b9 J) ^. r9 P( j. X' p$ swap cancelTradeoff -h& Q$ t' L3 H' w2 @
cancel tradeoff contract for asset swapping
- g- r! |# g  t, R7 {6 k: OUsage:
2 a/ x: R: K1 O0 z$ X6 D, B1 Q  oswap cancelTradeoff     [txFee flag] [URL flags(ip and port)] [flags]! O+ m: T9 Z; M# o' K2 T
Flags:) v! y$ R4 U1 T$ v6 g% O. t
-h, --help          help for cancelTradeoff1 U/ e) ?! l4 p. s+ \7 P. b
   --ip string     network address (default "127.0.0.1")! r6 u3 L3 Z" \7 X0 P
   --port string   network port (default "9888")* g, F9 U, w* C5 {
   --txFee uint    contract transaction fee (default 40000000)
3 R9 P) H! d0 |5 v* N取消tradeoff合约的实例化如下:
1 g" Y8 a) L+ W, D" q1 g* ^1 S $ swap deployTradeoff 10CJPO1HG0A02 12345 --amountLocked 20000000000 --amountRequested 1000000000 --assetLocked bae7e17bb8f5d0cfbfd87a92f3204da082d388d4c9b10e8dcd36b3d0a18ceb3a --assetRequested ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff --cancelKey 3e5d7d52d334964eef173021ef6a04dc0807ac8c41700fe718f5a80c2109f79e --seller 00145dd7b82556226d563b6e7d573fe61d23bd461c1f --txFee 40000000
/ n2 s; Y) r' E( h+ G% Y  --> contractUTXOID: e898ea907f8586b3211a46b69d0cddd363f8a850f559656570eb6afc6ac382c51 E: {- p: e0 s# z  y- j8 Y  ~
$ swap cancelTradeoff 10CJPO1HG0A02 12345 00145b0a81adc5c2d68a9967082a09c96e82d62aa058  e898ea907f8586b3211a46b69d0cddd363f8a850f559656570eb6afc6ac382c5  - q' F+ P( u( U! L2 B
--> txID: 0f75db743196b8b2e514c49d6483dfba9bd5ab8e913a7559ecaea0324977313f
5 E6 d7 f  I* u7 h" ?0 o! p0 E示例图如下:; M  k' }' ?! Y( f. V5 C( w

. p: ^2 a5 N: @/ G) E; h上面整个流程就是在同一条链上不同资产进行交换的整个过程,下面我们来看一下不同链上的两个资产进行交换,假设以bytom和vapor为例。
6 o& {, e' z6 W% O4 m! @/ [+ w第三步:不同链上资产进行交换3 u- g( Z, z3 W' B6 J9 ]4 b
你可以使用该工具在bytom和vapor上交换资产:; z5 Q7 V  [: g$ `

3 n  B' N5 E6 x/ z( d: n* I0 |' Q3.1 搭建并启动bytom和vapor节点- B  B: Q- }4 [# M% |4 c
为了方便测试。你可以启动bytom和vapor的solonet节点. y. {8 F0 {8 c8 W( g# x5 B
启动bytom solonet 节点:
, M' H5 i9 P' F4 a$ bytomd init --chain_id=solonet --home $HOME/bytom/solonet # init bytom   solonet node# V6 Y' Y! t: M! h2 }
$ bytomd node --home $HOME/bytom/solonet --mining           # launch bytom solonet node and start mining; S+ R) n6 m1 L$ ~
启动vapor solonet 节点:
/ x: ~# H$ ?! x4 x, C5 U$ vapord init --chain_id=solonet --home $HOME/bytom/vapor-solonet # init vapor solonet node
: X9 O! Y1 F& q0 P8 U; k$ vapord node --home $HOME/bytom/vapor-solonet --mining           # launch vapor solonet node and start mining
/ a% m/ d7 q5 k3.2 部署HTLC合约(合约的部署命令如下)1 T: M) I2 [. k$ K* q5 L
$ swap deployHTLC -h% ~& w; q8 Y+ b! D
deploy HTLC contract" |* t1 m% w6 s# c2 J
Usage:  E) D' K. q5 H2 q4 P, B! d
swap deployHTLC   [contract flags(paramenters and locked value)] [txFee flag] [URL flags(ip and port)] [flags]
+ R4 a3 c* X9 O  r' y, b Flags:# V1 W$ A/ N5 G  ~4 ?7 D7 y! b
  --amountLocked uint    HTLC contract locked value with amount
0 u8 N/ F* V/ D- t5 X, H$ }; G! G$ T* ]  --assetLocked string   HTLC contract locked value with assetID
7 O8 i$ ~5 d4 V8 f# z  --blockHeight uint     HTLC contract locked value with blockHeight. C4 X6 j. x$ f- p+ T3 V. k
  --hash string          HTLC contract locked value with hash
& M% N  Z3 g: O7 ]% r3 q# e-h, --help                 help for deployHTLC
6 W/ }. L  J1 a4 D  --ip string            network address (default "127.0.0.1")4 ?; k: {: y' l
  --port string          network port (default "9888")
% e0 k% M. t' C  K) G0 f2 v( W  --recipient string     HTLC contract paramenter with recipientPublicKey3 p: ^% r5 c7 A! \) n+ m
  --sender string        HTLC contract paramenter with sender PublicKey
7 L7 P5 y3 S2 C  --txFee uint           contract transaction fee (default 40000000)
8 o+ v9 K0 c: `7 M5 {部署HTLC合约的实例参数如下:
6 ^6 Q8 }3 y' [. b3 r $ swap deployHTLC 11BB7TC8G0A02 12345 --sender 7262584844d4c14f512d1b6c9838e62c320e1d7887e7185bfea920c72a944e44 --recipient 562013c2f9082f1db52a2571034428921dd6eec8c010c2b2387f5b6125ff4aa7 --blockHeight 1200 --hash 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 --assetLocked bae7e17bb8f5d0cfbfd87a92f3204da082d388d4c9b10e8dcd36b3d0a18ceb3a --amountLocked 20000000000! Z4 D. k; m1 u: X$ V
--> contractUTXOID: e1b104a03f4135b45d1c4c5fabbdca4dd0555653a588b71d790d45c4ffb2c50e  A4 `, _/ l5 U  M& H: |% x
3.3 调用HTLC合约
' w. j- R- f" J  Q$ swap callHTLC -h( I. I) H4 {. [: s: b
call HTLC contract for asset swapping6 j/ c& r3 Y* p- h
Usage:
6 I/ G! u6 z1 e+ ]$ S5 Fswap callHTLC      [txFee flag] [URL flags(ip and port)] [flags]6 S# A  g& V1 S- i
Flags:2 j! p' t. I7 C6 @
-h, --help          help for callHTLC
5 f* A8 b: A3 q" H  c   --ip string     network address (default "127.0.0.1")
6 B& f2 I) r/ D. ]7 Q   --port string   network port (default "9888")9 w- i3 n5 h' b5 H* E& T% J
   --txFee uint    contract transaction fee (default 40000000)
! i/ Y" j5 s; r+ N2 ^" }% T; h1 v调用HTLC合约的实力化参数如下:
! G6 ^  F5 ~, N: P$ swap callHTLC 11BB86V300A04 12345 0014230cb75fcfcc70c580ce7f1d21c1e374d27334a8 68656c6c6f e1b104a03f4135b45d1c4c5fabbdca4dd0555653a588b71d790d45c4ffb2c50e
! a& X$ Z3 C8 @--> txID: df57b7906684e3d85adf59073ccbc0a3c5114b165626e9791f3269e9e57c319e3 P, |" M  U4 Y: [* r! U
实际的交换过程如下:. V/ ^/ Q/ b# j( w+ W
$ b# Y: w* x. m/ J# L& ~
3.4 取消HTLC合约(命令参数如下)$ J5 @4 P" E% S; R
$ swap cancelHTLC -h. C4 R1 o# d& y1 U7 X4 B; f3 H
cancel HTLC contract for asset swapping
5 ]( {: @0 P9 c4 m" mUsage:. X) M: Z4 \/ U/ `# d4 P. s1 J: `
swap cancelHTLC     [txFee flag] [URL flags(ip and port)] [flags]- g4 v/ I+ F- N, O
Flags:
; o! [' P; E9 Q+ {3 u& Q" k, u/ M-h, --help          help for cancelHTLC" L3 o3 w) g. j3 `* {
  --ip string     network address (default "127.0.0.1")  J( \/ h5 M/ S/ F. G- g& y+ M' X
  --port string   network port (default "9888")
( s" P5 P2 v5 n9 J3 x! A  --txFee uint    contract transaction fee (default 40000000)/ Q$ @4 s7 q  ]# e1 B2 r
取消HTLC合约的实例化参数如下:
* u  }8 l) ]& D4 x; t  S* e  k: ~$ swap deployHTLC 11BB7TC8G0A02 12345 --sender 7262584844d4c14f512d1b6c9838e62c320e1d7887e7185bfea920c72a944e44 --recipient 562013c2f9082f1db52a2571034428921dd6eec8c010c2b2387f5b6125ff4aa7 --blockHeight 1200 --hash 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 --assetLocked bae7e17bb8f5d0cfbfd87a92f3204da082d388d4c9b10e8dcd36b3d0a18ceb3a --amountLocked 200000000005 r) q& q: X7 l2 G0 d- |
--> contractUTXOID: 68ed6b948b93544ea135482f1acd93d6b10cdc88f52d44133d264a5ee86b1ebd
( q: `9 K& v1 [4 G2 J3 L+ C% P$ swap cancelHTLC 11BB7TC8G0A02 12345 001434fec270871c1f3420db85831f59511b2dd2a026 68ed6b948b93544ea135482f1acd93d6b10cdc88f52d44133d264a5ee86b1ebd
$ ?3 q, H- x) C) w$ b) n--> txID: c70a467e94b287d29c6d91a2cb6f8ef3c7ef4dba315d99acf2dc9ff698996270
- ?# ]: w9 ]- N! H8 O0 B# h示例图如下:7 t/ g8 j" e% L6 F" t

9 ?! P; q: ~6 X6 Q4 K0 P. i取消HTLC合约以后,a4发起HTLC合约兑换的资产自动返回账户。8 w; p; P2 [- _  \& F' e7 V
这些都是a账户在bytom上的操作,a5账户同时在侧链上实现相同的操作就可以了。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

蕙质兰心283 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    1