Hi 游客

更多精彩,请登录!

比特池塘 区块链前沿 正文

手动构建OP_RETURN发送USDT

fzny61226
55 0 0
Omni协议, ?, ?( F, I  n
# f- R4 Z$ Q% Z$ n3 l( p! w, D
Omni协议(之前叫做 Mastercoin),是建立在比特网络上的一个协议.利用 Omni协议,可以很方便的创建代币,现有比特币网络上发行的代币可以在 Properties for ecosystem Production 找到,最知名的就是Tether(USDT).2 l+ d0 i0 d+ n4 f/ [4 h0 Q7 N0 o
Tether(USDT)是 Tether 公司推出的基于稳定价值货币美元(USD)的代币Tether USD(下称USDT),用户可以随时使用 USDT 与 USD 进行 1:1 兑换。Tether 公司严格遵守 1:1 的准备金保证,即每发行1个 USDT 代币,其银行账户都会有1美元的资金保障。官方称:用户可以在 Tether 平台进行资金查询(现在查不到)
6 o4 I4 y+ Q8 e1 Q/ x  kUSDT交易
5 G1 Q) N0 V6 t) O  A2 ?  r9 aBTC网络的一笔USDT交易详情如下: 0347ab8f6291ab38c233576ddc0a4c3156b96d9fa800b07f2962e35c5b40011c1 I; u2 ~5 X* G$ R% C; R
/ h( ?7 B. K8 H6 m
vins: 这笔交易的  来自 1JDtcRLZyDQJm9g6xXuuSYEpp7SKagXDc7的UTXO: 分别是0.01585606和0.00000546.3 \9 |0 `( j6 |) p7 f$ V- V
vout1: 找零0.01575606到1JDtcRLZyDQJm9g6xXuuSYEpp7SKagXDc7! z$ u& H' V# H( D
vout2: OP_RETURN锁定脚本,这个 vout 是 Omni 交易的特征之一,真正要发送的 USDT 数量就是在这个 vout 中体现的,后面详细的介绍
" A0 m9 F- D. T7 w% j2 s- K" Wvout3: 往1NomS9Umy2AJV2xECL89sxwL4RyXmGkyZm发送 0.00000546,一般Omni 交易往目的地址都是发送这么多金额,这个值是BTC网络允许的最低的数量.可以这么理解:USDT是借助了BTC网络来进行交易,所以你只需要支付最少的BTC来保证交易能够创建就可以了(当然也可以超过0.00000546,但是没有必要)$ U/ _6 |6 w  F# e$ j; i' x5 G
OP_RETURN% w% z) ]* ~' f
以 OP_RETURN 开头的锁定脚本有着以下两种含义:0 m( c* w- N8 {3 j* S
这个 vout 不能被花费OP_RETURN后面跟随的是备注信息' Q; m! D8 G& r& h0 z

9 }4 X0 v1 s* j  o在上面的 vout2中: OP_RETURN 6f6d6e69000000000000001f0000000b0f387b00代表的意义如下:
; o5 ]$ `3 P2 f, o5 n' {6f6d6e69 : "omni"的ASCII编码,以为这个备注信息是与 Omni 协议有关系的
( \3 f$ S4 z; U- z0000 : Transaction version
3 {) r+ Q+ S! c2 t+ G% J; \0000 : Transaction type, 2 Bytes,代表着Simple Send! X6 D" O  u9 r$ Q! A
0000001f : Currency identifier, 4 bytes.1f== 31 == TetherUS. ^% Z6 g6 j& Z1 f
BTC主网: 1 and 3 to 2,147,483,647
. k+ N" X$ @2 Z3 ]2 p4 sBTC测试网: 2 and 2,147,483,651 to 4,294,967,295
! E+ G& D8 c& p6 |0000000b0f387b00 : Amount to transfer. 8Bytes. 数量的十六进制0000000b0f387b00 = 47500000000聪 = 475 USDT% Z( {. m, b( R0 Q* D

3 n7 ~1 ~& V" p" ~如何使用 Trezor 发送的USDT& X7 g# ^! R7 `6 ?' I/ ~
4 N8 g5 {( E3 R
Trezor 是为数不多支持 TetherUS的钱包,强如 Ledger 都还不支持# a7 H0 x0 r( e4 D
使用 Trezor 来发送 USDT,你可以通过下面两种方式:
# b' l8 [, }+ F! g8 Z! v
9 U' D- b+ F  w. U' X( N7 W( bTrezor + Electrum : 这个可以参考How to send USDT with Electrum& K9 K- s9 [) @) n4 E/ p, _
; K1 ?" E4 B1 P  a- b) P1 P
官方的Chrome/FireFox extension wallet(下面只介绍这种)
5 h/ p* H3 N) `7 x- D; r) y  q
+ n) e/ E/ R8 n8 m) i

5 K+ x" Q! r) `4 W这两种方式核心都是一样的,都是手动构建 OP_RETURN, 然后签名广播+ Q% V! K/ b# n7 p! h! w
下面使用测试网进行说明  {+ p! P# c2 U
步骤一:
5 X: B/ j) A% Q新建一个 Legacy 的账号,由于Trezor web wallet不支持指定send from,需要保证一个账号只生成一个地址. "账号"的概念指的是HD中第三层,m/44’/1’/1’的意思是:测试网普通地址,第二个账号
$ ^3 M" Y4 i) g& J+ x1 c2 q步骤二:
7 o) `: P4 T) N1 e5 S从mujE43EZckhHf6i1P2ru9UUg78VTjLwwL3发送 1666 USDT 到 msbuQnXJPcqimUi3eiWFE9oPu15Ce7dphm) W9 Y; {% A( K- d* J
这里 web前端限制了不能填 0.00000546,所以填了0.00000547
. U6 Z3 h1 ~$ n3 F7 H7 {由于 Omni协议中,vout 找零必须找给发送地址,否则,这笔交易将不会被判断为是 Omni交易,只会认为是发送 0.00000546的普通BTC交易,所以这里增加一个 vout,将剩下的钱全部转给原 SendFrom 地址mujE43EZckhHf6i1P2ru9UUg78VTjLwwL3
, i( w3 `% N4 Q" t: j$ J) @0 q5 n, d
步骤三: 构建OP_RETURN:OP_RETURN 6f6d6e6900000000800004e70000000000000682
  P8 I& @! _# C: v: Y1 @/ T我在BTC Testnet发的币 propertyID 为 2147484903
' t/ B5 `, D. z9 }# J* g& W) f( j7 U
" q8 l0 Z, E% O, l4 q; U2 R+ }

, Q2 |; ?1 A/ z3 G) {最后的交易:b61dee5fc2f4588bcef39c1e6f12fee9b963c311efc6731ba06e351fcc3dbb753 L$ F8 P9 c" r/ c/ t
9 \) g- Q1 v! t/ k& z3 ]
) o  O9 P4 k/ s" T
其他
2 R. Q" |0 u, @. B. S: F; J如果觉得构建 OP_RETURN 很麻烦,那么可以使用 Omni 的 maintainer 在 github 发布的一个工具快速构建OP_RETURN脚本
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

fzny61226 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    22