Hi 游客

更多精彩,请登录!

比特池塘 区块链前沿 正文

手动构建OP_RETURN发送USDT

fzny61226
103 0 0
Omni协议0 S& F5 \3 }' J; m8 [5 D' T5 g5 G

3 o. O" D: w" s# k; ^8 W/ GOmni协议(之前叫做 Mastercoin),是建立在比特网络上的一个协议.利用 Omni协议,可以很方便的创建代币,现有比特币网络上发行的代币可以在 Properties for ecosystem Production 找到,最知名的就是Tether(USDT).
* F, m$ x- F* i/ U0 [* L/ B9 B+ nTether(USDT)是 Tether 公司推出的基于稳定价值货币美元(USD)的代币Tether USD(下称USDT),用户可以随时使用 USDT 与 USD 进行 1:1 兑换。Tether 公司严格遵守 1:1 的准备金保证,即每发行1个 USDT 代币,其银行账户都会有1美元的资金保障。官方称:用户可以在 Tether 平台进行资金查询(现在查不到)) g7 C( H8 W5 A1 q9 Q2 \4 m
USDT交易
5 i. P" F# E0 b  PBTC网络的一笔USDT交易详情如下: 0347ab8f6291ab38c233576ddc0a4c3156b96d9fa800b07f2962e35c5b40011c
: B$ S9 L) N# _* X* G0 F" p' `; K: `2 \' h( w3 c' N2 `' A
vins: 这笔交易的  来自 1JDtcRLZyDQJm9g6xXuuSYEpp7SKagXDc7的UTXO: 分别是0.01585606和0.00000546.$ z) E8 b4 Q; R% E2 w& {/ W
vout1: 找零0.01575606到1JDtcRLZyDQJm9g6xXuuSYEpp7SKagXDc7- V% f1 b  j6 i  z& Z% T$ d8 B
vout2: OP_RETURN锁定脚本,这个 vout 是 Omni 交易的特征之一,真正要发送的 USDT 数量就是在这个 vout 中体现的,后面详细的介绍
7 }8 C+ B/ x1 T- y' K1 Y2 Wvout3: 往1NomS9Umy2AJV2xECL89sxwL4RyXmGkyZm发送 0.00000546,一般Omni 交易往目的地址都是发送这么多金额,这个值是BTC网络允许的最低的数量.可以这么理解:USDT是借助了BTC网络来进行交易,所以你只需要支付最少的BTC来保证交易能够创建就可以了(当然也可以超过0.00000546,但是没有必要)
" l5 j# {; c1 x0 k' HOP_RETURN
  @7 w1 Q% ~  Y* l# \' E以 OP_RETURN 开头的锁定脚本有着以下两种含义:( v$ W/ ], i9 I$ z0 X
这个 vout 不能被花费OP_RETURN后面跟随的是备注信息& Q4 H6 v3 J* j8 W/ o
  ^. G4 i* B. M+ X
在上面的 vout2中: OP_RETURN 6f6d6e69000000000000001f0000000b0f387b00代表的意义如下:
; Z" e6 y% ]7 j, s, C. N" I6f6d6e69 : "omni"的ASCII编码,以为这个备注信息是与 Omni 协议有关系的
0 r& g. c% |% ^5 x: o, T0000 : Transaction version
& ]  S# Y- H" J0000 : Transaction type, 2 Bytes,代表着Simple Send
7 b& ?6 V" e7 x- }. Q1 W0000001f : Currency identifier, 4 bytes.1f== 31 == TetherUS
: T. F1 v7 ~& s1 FBTC主网: 1 and 3 to 2,147,483,647
) Q/ v( i1 k% V1 U! KBTC测试网: 2 and 2,147,483,651 to 4,294,967,295
2 T6 u: h3 Z: v5 c$ V8 p0000000b0f387b00 : Amount to transfer. 8Bytes. 数量的十六进制0000000b0f387b00 = 47500000000聪 = 475 USDT2 z- ]1 N; q" h' W$ p- F
* n  f4 @% M1 J1 `$ Q: m( e
如何使用 Trezor 发送的USDT
# p4 K% F- T' ^: b) o5 q) Y$ m( k  _
Trezor 是为数不多支持 TetherUS的钱包,强如 Ledger 都还不支持9 o1 E5 }* {1 D7 y/ x) {& R0 h
使用 Trezor 来发送 USDT,你可以通过下面两种方式:- I8 `! S# {  ?4 p& ]( s( R  c

+ i, q* I( b1 d, O4 f8 Q  G( E" dTrezor + Electrum : 这个可以参考How to send USDT with Electrum! ~- P, E; z( w  f
6 n( ~* L$ d) X: ^+ q! R
官方的Chrome/FireFox extension wallet(下面只介绍这种). p# F# i1 Q3 T: j
" S' o0 U) e7 x7 I/ w& d' p

4 e$ [9 Z) |9 B  u- B  a这两种方式核心都是一样的,都是手动构建 OP_RETURN, 然后签名广播4 A7 G5 q( U1 ^+ P
下面使用测试网进行说明1 U- o+ f) h! u$ f
步骤一:
/ w; r; V" Q8 b0 j新建一个 Legacy 的账号,由于Trezor web wallet不支持指定send from,需要保证一个账号只生成一个地址. "账号"的概念指的是HD中第三层,m/44’/1’/1’的意思是:测试网普通地址,第二个账号0 ~# x3 @0 T& Q1 [
步骤二:
/ S% {: @4 N2 g: Y从mujE43EZckhHf6i1P2ru9UUg78VTjLwwL3发送 1666 USDT 到 msbuQnXJPcqimUi3eiWFE9oPu15Ce7dphm
6 F0 h- I6 }! H* b: K这里 web前端限制了不能填 0.00000546,所以填了0.00000547+ i7 a! o% ?) O8 G
由于 Omni协议中,vout 找零必须找给发送地址,否则,这笔交易将不会被判断为是 Omni交易,只会认为是发送 0.00000546的普通BTC交易,所以这里增加一个 vout,将剩下的钱全部转给原 SendFrom 地址mujE43EZckhHf6i1P2ru9UUg78VTjLwwL38 W. \0 m2 {) v/ `& H  C

) o' V" v4 c2 J. ?" \) X步骤三: 构建OP_RETURN:OP_RETURN 6f6d6e6900000000800004e70000000000000682" O& e4 K, Q  u. {
我在BTC Testnet发的币 propertyID 为 2147484903
" ~/ D5 ?0 s* X5 O2 V. s
! h2 e1 d: i+ l% n/ x- F" t
6 k2 H4 C& d: @* }6 o. n, J+ K: ]( W/ o% q7 l" @6 s) N, ^1 q
最后的交易:b61dee5fc2f4588bcef39c1e6f12fee9b963c311efc6731ba06e351fcc3dbb75+ D- |6 w( t- b5 Z

" H1 \8 Z6 f; m4 h' L2 Z- `& k$ D  U8 h4 t3 u2 M  f* N9 m
其他
  Z# d! D: g  O& I  ]: M7 R0 I如果觉得构建 OP_RETURN 很麻烦,那么可以使用 Omni 的 maintainer 在 github 发布的一个工具快速构建OP_RETURN脚本
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

fzny61226 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    22