Hi 游客

更多精彩,请登录!

比特池塘 区块链前沿 正文

手动构建OP_RETURN发送USDT

fzny61226
59 0 0
Omni协议; t; _  a8 W4 _2 K. n  Z2 N+ n

7 s* R  U: S6 r  |% Q1 R: |Omni协议(之前叫做 Mastercoin),是建立在比特网络上的一个协议.利用 Omni协议,可以很方便的创建代币,现有比特币网络上发行的代币可以在 Properties for ecosystem Production 找到,最知名的就是Tether(USDT).! m; c9 u0 m* F+ _, d7 z# v
Tether(USDT)是 Tether 公司推出的基于稳定价值货币美元(USD)的代币Tether USD(下称USDT),用户可以随时使用 USDT 与 USD 进行 1:1 兑换。Tether 公司严格遵守 1:1 的准备金保证,即每发行1个 USDT 代币,其银行账户都会有1美元的资金保障。官方称:用户可以在 Tether 平台进行资金查询(现在查不到)# l$ p& g3 ?2 S  E- X
USDT交易4 p; c) R0 u" t1 w
BTC网络的一笔USDT交易详情如下: 0347ab8f6291ab38c233576ddc0a4c3156b96d9fa800b07f2962e35c5b40011c
3 @  q: t& g2 B0 i1 j5 a9 Z3 `
: w3 N# L! o: w/ e0 B* \  Fvins: 这笔交易的  来自 1JDtcRLZyDQJm9g6xXuuSYEpp7SKagXDc7的UTXO: 分别是0.01585606和0.00000546.
4 ^4 a: _" ~8 u8 Z' C5 @vout1: 找零0.01575606到1JDtcRLZyDQJm9g6xXuuSYEpp7SKagXDc79 k$ |9 E) |2 H( H9 j5 B
vout2: OP_RETURN锁定脚本,这个 vout 是 Omni 交易的特征之一,真正要发送的 USDT 数量就是在这个 vout 中体现的,后面详细的介绍9 \7 I" N8 p+ M5 w& U! O! h
vout3: 往1NomS9Umy2AJV2xECL89sxwL4RyXmGkyZm发送 0.00000546,一般Omni 交易往目的地址都是发送这么多金额,这个值是BTC网络允许的最低的数量.可以这么理解:USDT是借助了BTC网络来进行交易,所以你只需要支付最少的BTC来保证交易能够创建就可以了(当然也可以超过0.00000546,但是没有必要)9 P1 ?" s* o. \& c; H0 h8 J! e
OP_RETURN! Y! \" u9 t5 I$ s4 x6 X3 `
以 OP_RETURN 开头的锁定脚本有着以下两种含义:
3 y8 c! I: q  |5 x2 b这个 vout 不能被花费OP_RETURN后面跟随的是备注信息
9 s* J6 w  Y. h6 Z

+ F6 P  x0 |* ^6 N7 h) O在上面的 vout2中: OP_RETURN 6f6d6e69000000000000001f0000000b0f387b00代表的意义如下:
) G/ ~+ F4 T# i- o6f6d6e69 : "omni"的ASCII编码,以为这个备注信息是与 Omni 协议有关系的  Y( z6 \: G! ?3 X
0000 : Transaction version  |$ B! r' A- W' R; x7 B# A. B* X
0000 : Transaction type, 2 Bytes,代表着Simple Send  L7 @3 B4 H; x9 P4 l
0000001f : Currency identifier, 4 bytes.1f== 31 == TetherUS1 b6 k9 k2 r$ ]0 _6 y- r
BTC主网: 1 and 3 to 2,147,483,647
2 L& k* r6 x! t- m' }) VBTC测试网: 2 and 2,147,483,651 to 4,294,967,295
6 z7 U# s, c9 T( v0000000b0f387b00 : Amount to transfer. 8Bytes. 数量的十六进制0000000b0f387b00 = 47500000000聪 = 475 USDT# h4 P" }. i3 ^+ I

/ }' ^: x  Q7 @) _3 q: R1 E如何使用 Trezor 发送的USDT: x+ b% m- D* W% g

+ p0 |" c1 Z: R: c/ q" |Trezor 是为数不多支持 TetherUS的钱包,强如 Ledger 都还不支持
4 M7 }/ |8 y- y! \使用 Trezor 来发送 USDT,你可以通过下面两种方式:
* ]* e1 z2 y6 Z4 W. i2 z8 q0 B+ c& c% U' Z, `$ [6 H7 a
Trezor + Electrum : 这个可以参考How to send USDT with Electrum
! `1 r6 N* C& p# R4 B* g

1 }, g) f6 R( e! G" n/ A( d官方的Chrome/FireFox extension wallet(下面只介绍这种)! I. R3 B+ Y# f

1 z6 Z* K. `$ o: P
( `9 |# c6 |3 _, G& L& m9 ?( m
这两种方式核心都是一样的,都是手动构建 OP_RETURN, 然后签名广播
2 E0 S9 d% X* [$ T下面使用测试网进行说明
8 P( i  |- H1 ^步骤一:
9 @" k* P" m! ~, B% E新建一个 Legacy 的账号,由于Trezor web wallet不支持指定send from,需要保证一个账号只生成一个地址. "账号"的概念指的是HD中第三层,m/44’/1’/1’的意思是:测试网普通地址,第二个账号5 ]$ j" S+ r9 y6 w' r
步骤二:% g' @& z( Z+ [& V/ e! a' g
从mujE43EZckhHf6i1P2ru9UUg78VTjLwwL3发送 1666 USDT 到 msbuQnXJPcqimUi3eiWFE9oPu15Ce7dphm
2 u: V. R' I0 y3 P, j# o, e这里 web前端限制了不能填 0.00000546,所以填了0.00000547
1 |, K% l$ U* ]: w" K* R# k( L( A由于 Omni协议中,vout 找零必须找给发送地址,否则,这笔交易将不会被判断为是 Omni交易,只会认为是发送 0.00000546的普通BTC交易,所以这里增加一个 vout,将剩下的钱全部转给原 SendFrom 地址mujE43EZckhHf6i1P2ru9UUg78VTjLwwL3
& k: u; L, Q0 Z: S( S; k: X7 }3 A3 O! _' s+ y/ k
步骤三: 构建OP_RETURN:OP_RETURN 6f6d6e6900000000800004e70000000000000682
! a+ V9 }& u9 s0 N. g. j我在BTC Testnet发的币 propertyID 为 2147484903
* V( Z5 A: c  }2 E9 N, f' D
1 w3 O$ |/ M1 v4 v# B' r2 Y5 N" s( `) `# @9 h; W. F# w3 S0 j

& m% P% M) k- i$ Q) L最后的交易:b61dee5fc2f4588bcef39c1e6f12fee9b963c311efc6731ba06e351fcc3dbb75/ t5 V; S& k5 f1 T2 r7 [  N" S3 w3 Z

! P! d' D: i$ U7 \( s1 [: V8 @) E* Y! b
其他
6 W$ I( }" Z4 D如果觉得构建 OP_RETURN 很麻烦,那么可以使用 Omni 的 maintainer 在 github 发布的一个工具快速构建OP_RETURN脚本
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

fzny61226 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    22