Hi 游客

更多精彩,请登录!

比特池塘 区块链前沿 正文

手动构建OP_RETURN发送USDT

fzny61226
58 0 0
Omni协议8 f. z6 W2 Z2 N' ~

0 u5 k% h$ J" p$ p' G/ B# |Omni协议(之前叫做 Mastercoin),是建立在比特网络上的一个协议.利用 Omni协议,可以很方便的创建代币,现有比特币网络上发行的代币可以在 Properties for ecosystem Production 找到,最知名的就是Tether(USDT).. q7 @  P- ~5 H1 ?2 S) f
Tether(USDT)是 Tether 公司推出的基于稳定价值货币美元(USD)的代币Tether USD(下称USDT),用户可以随时使用 USDT 与 USD 进行 1:1 兑换。Tether 公司严格遵守 1:1 的准备金保证,即每发行1个 USDT 代币,其银行账户都会有1美元的资金保障。官方称:用户可以在 Tether 平台进行资金查询(现在查不到). y) z% ]* C8 k5 L
USDT交易
/ m6 v2 Q+ B* }. \% l" lBTC网络的一笔USDT交易详情如下: 0347ab8f6291ab38c233576ddc0a4c3156b96d9fa800b07f2962e35c5b40011c/ [$ L1 S  H$ x+ e! M1 W
4 c2 u; Q! `; y" @
vins: 这笔交易的  来自 1JDtcRLZyDQJm9g6xXuuSYEpp7SKagXDc7的UTXO: 分别是0.01585606和0.00000546.9 Y) u. E6 G4 u/ Q/ x: N' G# z8 ^
vout1: 找零0.01575606到1JDtcRLZyDQJm9g6xXuuSYEpp7SKagXDc76 M% K' z* Z  ]5 e3 H$ T- X
vout2: OP_RETURN锁定脚本,这个 vout 是 Omni 交易的特征之一,真正要发送的 USDT 数量就是在这个 vout 中体现的,后面详细的介绍
! ^' o$ g* l  J3 d0 j1 B  p' x$ ^vout3: 往1NomS9Umy2AJV2xECL89sxwL4RyXmGkyZm发送 0.00000546,一般Omni 交易往目的地址都是发送这么多金额,这个值是BTC网络允许的最低的数量.可以这么理解:USDT是借助了BTC网络来进行交易,所以你只需要支付最少的BTC来保证交易能够创建就可以了(当然也可以超过0.00000546,但是没有必要)
1 y' w$ ^$ _7 J# W0 r1 h8 |+ L! fOP_RETURN' S5 O+ }* {2 G
以 OP_RETURN 开头的锁定脚本有着以下两种含义:
, O1 B' N! U8 S* c5 V4 B6 B0 L这个 vout 不能被花费OP_RETURN后面跟随的是备注信息
4 c" N4 L  e" Y# U

8 i( g5 {3 ^; w在上面的 vout2中: OP_RETURN 6f6d6e69000000000000001f0000000b0f387b00代表的意义如下:3 f$ I9 I; J$ @; E
6f6d6e69 : "omni"的ASCII编码,以为这个备注信息是与 Omni 协议有关系的
- N: g" e; ]1 P0000 : Transaction version
! p  v: l; \; w- {0000 : Transaction type, 2 Bytes,代表着Simple Send
2 B# y8 ^% c& Y8 {4 u0000001f : Currency identifier, 4 bytes.1f== 31 == TetherUS
  m8 g* J  C/ U: k+ m% M: L* j* hBTC主网: 1 and 3 to 2,147,483,647
4 P1 j, _5 `: e. }1 F0 P, S' o, ?$ oBTC测试网: 2 and 2,147,483,651 to 4,294,967,295
- G5 D! w) q- {0000000b0f387b00 : Amount to transfer. 8Bytes. 数量的十六进制0000000b0f387b00 = 47500000000聪 = 475 USDT4 U6 G% L4 w* H% @2 B: s9 F* c  y
$ P! j7 [3 R* n6 q% H* H
如何使用 Trezor 发送的USDT( }3 o7 f8 e9 a# `

5 x6 l9 y" C* o, M' sTrezor 是为数不多支持 TetherUS的钱包,强如 Ledger 都还不支持) F2 Z2 I( F% U
使用 Trezor 来发送 USDT,你可以通过下面两种方式:' `. R$ a* p, }) l3 u; m- o

5 Q  B+ Y% {8 I# R, z9 i- s0 qTrezor + Electrum : 这个可以参考How to send USDT with Electrum
$ \* S2 `) u* z

$ J" K6 U2 A5 v- T0 F. s官方的Chrome/FireFox extension wallet(下面只介绍这种)& W9 t4 a0 c" C8 `6 _5 J4 V- g9 e
% T2 q, a6 t) a. ~/ l/ _

  h3 \4 k- ?/ @( p这两种方式核心都是一样的,都是手动构建 OP_RETURN, 然后签名广播- D) O$ }1 {% I; x
下面使用测试网进行说明
% C7 l8 c; d0 ~- U步骤一:
4 S- b9 M4 v$ z8 @新建一个 Legacy 的账号,由于Trezor web wallet不支持指定send from,需要保证一个账号只生成一个地址. "账号"的概念指的是HD中第三层,m/44’/1’/1’的意思是:测试网普通地址,第二个账号: z. e9 a$ L" n# q
步骤二:  |6 \1 S# E! D0 I3 f
从mujE43EZckhHf6i1P2ru9UUg78VTjLwwL3发送 1666 USDT 到 msbuQnXJPcqimUi3eiWFE9oPu15Ce7dphm4 F/ \5 K6 ~' Y
这里 web前端限制了不能填 0.00000546,所以填了0.00000547
5 f$ g1 o7 I  a6 A由于 Omni协议中,vout 找零必须找给发送地址,否则,这笔交易将不会被判断为是 Omni交易,只会认为是发送 0.00000546的普通BTC交易,所以这里增加一个 vout,将剩下的钱全部转给原 SendFrom 地址mujE43EZckhHf6i1P2ru9UUg78VTjLwwL3
9 |+ j( ^+ z% s! ^- X2 E
3 T' i+ F% f4 [/ o4 I$ Y: c步骤三: 构建OP_RETURN:OP_RETURN 6f6d6e6900000000800004e700000000000006825 s2 B/ r; f5 |' ~% w
我在BTC Testnet发的币 propertyID 为 2147484903
2 G* A8 l! ^6 |7 G% V0 q5 G; }' A. N) R- e/ E, q' P1 h" v
# ^* k& f" f3 k& E8 R
! l  }4 S5 ~7 I* x% b9 c
最后的交易:b61dee5fc2f4588bcef39c1e6f12fee9b963c311efc6731ba06e351fcc3dbb75
: @: {' w- l: W/ |4 W0 u7 `6 r

7 z! H' [4 r- `' u其他
1 P8 r3 L* J9 C! f7 Y8 @6 s' s如果觉得构建 OP_RETURN 很麻烦,那么可以使用 Omni 的 maintainer 在 github 发布的一个工具快速构建OP_RETURN脚本
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

fzny61226 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    22