Hi 游客

更多精彩,请登录!

比特池塘 区块链前沿 正文

手动构建OP_RETURN发送USDT

fzny61226
39 0 0
Omni协议
5 B+ u; z" W$ U2 w
  V- n" j1 n( e  I" }Omni协议(之前叫做 Mastercoin),是建立在比特网络上的一个协议.利用 Omni协议,可以很方便的创建代币,现有比特币网络上发行的代币可以在 Properties for ecosystem Production 找到,最知名的就是Tether(USDT).. X; R. r9 {& L) y5 Y# N
Tether(USDT)是 Tether 公司推出的基于稳定价值货币美元(USD)的代币Tether USD(下称USDT),用户可以随时使用 USDT 与 USD 进行 1:1 兑换。Tether 公司严格遵守 1:1 的准备金保证,即每发行1个 USDT 代币,其银行账户都会有1美元的资金保障。官方称:用户可以在 Tether 平台进行资金查询(现在查不到)& C3 y, V- o8 t$ D2 k
USDT交易- }3 A5 A/ L8 n& J% E
BTC网络的一笔USDT交易详情如下: 0347ab8f6291ab38c233576ddc0a4c3156b96d9fa800b07f2962e35c5b40011c
. `. {# @/ y- F2 Z: p# H
; e" Q- e* J" |) P" I; Uvins: 这笔交易的  来自 1JDtcRLZyDQJm9g6xXuuSYEpp7SKagXDc7的UTXO: 分别是0.01585606和0.00000546., Y" l% G5 O3 c* V- A. ?7 g( D
vout1: 找零0.01575606到1JDtcRLZyDQJm9g6xXuuSYEpp7SKagXDc7: N9 ~6 T: B. w% H7 |, V: k/ Y
vout2: OP_RETURN锁定脚本,这个 vout 是 Omni 交易的特征之一,真正要发送的 USDT 数量就是在这个 vout 中体现的,后面详细的介绍1 X" G  M: j% V4 g0 H
vout3: 往1NomS9Umy2AJV2xECL89sxwL4RyXmGkyZm发送 0.00000546,一般Omni 交易往目的地址都是发送这么多金额,这个值是BTC网络允许的最低的数量.可以这么理解:USDT是借助了BTC网络来进行交易,所以你只需要支付最少的BTC来保证交易能够创建就可以了(当然也可以超过0.00000546,但是没有必要)
& L0 s% Y# j: T# L5 W4 r' q, ^OP_RETURN
1 e( y, P' b) i5 y以 OP_RETURN 开头的锁定脚本有着以下两种含义:
; N( q: M- T: T$ x. i3 c4 Y这个 vout 不能被花费OP_RETURN后面跟随的是备注信息! }0 ^$ U5 s& A" ?" j

7 T) c6 M  m7 j# C9 j在上面的 vout2中: OP_RETURN 6f6d6e69000000000000001f0000000b0f387b00代表的意义如下:
9 U) k/ G; d, E6f6d6e69 : "omni"的ASCII编码,以为这个备注信息是与 Omni 协议有关系的
# @8 h, M/ |7 ?. G0000 : Transaction version
5 i6 M: G4 R. K- J0000 : Transaction type, 2 Bytes,代表着Simple Send& ?  ~9 y5 L5 V) ?/ j, H
0000001f : Currency identifier, 4 bytes.1f== 31 == TetherUS, A4 B$ ]1 ^4 p0 E4 _! F0 p0 z
BTC主网: 1 and 3 to 2,147,483,647
' l' r) R- R1 G" KBTC测试网: 2 and 2,147,483,651 to 4,294,967,295
: T- @& ?+ \% l4 Q$ ]. g6 w1 v8 D0000000b0f387b00 : Amount to transfer. 8Bytes. 数量的十六进制0000000b0f387b00 = 47500000000聪 = 475 USDT0 Y  V) t0 ~( G7 k. i- l, \. ~
1 H' d6 d$ I4 s- H+ X/ p' x
如何使用 Trezor 发送的USDT
4 c  d, T+ R% r
; z0 N$ D. j; M6 k, m' hTrezor 是为数不多支持 TetherUS的钱包,强如 Ledger 都还不支持
( \+ I% n6 Y  |- Q+ ?& G: F' d使用 Trezor 来发送 USDT,你可以通过下面两种方式:' ]8 h( y2 g, C$ J7 [9 ~9 F" u8 o1 t1 D0 Z1 j

% t$ E) V; X, y" B, A0 aTrezor + Electrum : 这个可以参考How to send USDT with Electrum
% W8 h* _3 h0 }$ K9 b) k

4 I# k3 O1 L3 x, I( @. ^官方的Chrome/FireFox extension wallet(下面只介绍这种)2 c  F; w* t4 _  ?& J8 l

, \) k) f7 Y' k& K
! X5 V% q$ T( R2 `
这两种方式核心都是一样的,都是手动构建 OP_RETURN, 然后签名广播) ~4 E4 g! f; x4 m+ F6 K1 P8 n" B/ r% L
下面使用测试网进行说明
! X6 v; J/ ~4 ]: _8 p- L) K0 _步骤一:
' |. _* m, T; ~2 ]  i新建一个 Legacy 的账号,由于Trezor web wallet不支持指定send from,需要保证一个账号只生成一个地址. "账号"的概念指的是HD中第三层,m/44’/1’/1’的意思是:测试网普通地址,第二个账号9 e# a( T" n5 H5 v4 o+ k
步骤二:
/ |( Y- t& r8 q- w) I! N. J; e# w从mujE43EZckhHf6i1P2ru9UUg78VTjLwwL3发送 1666 USDT 到 msbuQnXJPcqimUi3eiWFE9oPu15Ce7dphm
0 O3 p6 R6 s4 i- Z这里 web前端限制了不能填 0.00000546,所以填了0.000005471 {$ M2 F" g( ?3 {+ u( L( n
由于 Omni协议中,vout 找零必须找给发送地址,否则,这笔交易将不会被判断为是 Omni交易,只会认为是发送 0.00000546的普通BTC交易,所以这里增加一个 vout,将剩下的钱全部转给原 SendFrom 地址mujE43EZckhHf6i1P2ru9UUg78VTjLwwL3
3 ?8 p. W# x  P* C) K2 ^- S1 f8 e+ C' c  T: v8 _
步骤三: 构建OP_RETURN:OP_RETURN 6f6d6e6900000000800004e700000000000006821 t+ [  P6 X( G3 E
我在BTC Testnet发的币 propertyID 为 2147484903$ _4 L8 k, {/ [6 r" v
1 Q  J. V- H8 n1 H

  z6 J( Z. A4 g% S; `, E) p1 d6 n! e5 u
最后的交易:b61dee5fc2f4588bcef39c1e6f12fee9b963c311efc6731ba06e351fcc3dbb75% b* Y% l3 M* O9 X

* s# x8 h# d' L4 q$ h( I
6 K% j' e% N) F/ s) V' x* x6 |其他
4 ^' s( E- v4 l3 Y如果觉得构建 OP_RETURN 很麻烦,那么可以使用 Omni 的 maintainer 在 github 发布的一个工具快速构建OP_RETURN脚本
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

fzny61226 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    22