Omni協議(以前叫作 Mastercoin),是創建在比特網絡上的一個協議.利用 Omni協議,能夠很方便的建立代幣,現有比特幣網絡上發行的代幣能夠在 Properties for ecosystem Production 找到,最知名的就是Tether(USDT).git
Tether(USDT)是 Tether
公司推出的基於穩訂價值貨幣美圓(USD)的代幣Tether USD(下稱USDT),用戶能夠隨時使用 USDT 與 USD 進行 1:1 兌換。Tether 公司嚴格遵照 1:1 的準備金保證,即每發行1個 USDT 代幣,其銀行帳戶都會有1美圓的資金保障。官方稱:用戶能夠在 Tether 平臺進行資金查詢(如今查不到)github
BTC網絡的一筆USDT交易詳情以下: 0347ab8f6291ab38c233576ddc0a4c3156b96d9fa800b07f2962e35c5b40011cweb
vins: 這筆交易的 來自 1JDtcRLZyDQJm9g6xXuuSYEpp7SKagXDc7
的UTXO: 分別是0.01585606
和0.00000546
.c#
vout1: 找零0.01575606
到1JDtcRLZyDQJm9g6xXuuSYEpp7SKagXDc7
瀏覽器
vout2: OP_RETURN鎖定腳本,這個 vout 是 Omni 交易的特徵之一,真正要發送的 USDT 數量就是在這個 vout 中體現的,後面詳細的介紹網絡
vout3: 往1NomS9Umy2AJV2xECL89sxwL4RyXmGkyZm
發送 0.00000546
,通常Omni 交易往目的地址都是發送這麼多金額,這個值是BTC網絡容許的最低的數量.能夠這麼理解:USDT是藉助了BTC網絡來進行交易,因此你只須要支付最少的BTC來保證交易可以建立就能夠了(固然也能夠超過0.00000546
,可是沒有必要)ide
以 OP_RETURN 開頭的鎖定腳本有着如下兩種含義:工具
在上面的 vout2中: OP_RETURN 6f6d6e69000000000000001f0000000b0f387b00
表明的意義以下:測試
Simple Send
1f
== 31
== TetherUS
Field | Type | Bytes | Example |
---|---|---|---|
Transaction version | Transaction version | 2 | 0 |
Transaction type | Transaction type | 2 | 0 |
Currency identifier | Currency identifier | 4 | 1f |
Amount to transfer | Number of Coins | 8 | 0000000b0f387b00 |
Trezor 是爲數很少支持 TetherUS的錢包,強如 Ledger 都還不支持
使用 Trezor 來發送 USDT,你能夠經過下面兩種方式:
Trezor + Electrum : 這個能夠參考How to send USDT with Electrum
官方的Chrome/FireFox extension wallet(下面只介紹這種)
這兩種方式核心都是同樣的,都是手動構建 OP_RETURN, 而後簽名廣播
下面使用測試網進行說明
步驟一: 新建一個 Legacy 的帳號,因爲Trezor web wallet不支持指定send from
,須要保證一個帳號只生成一個地址. "帳號"的概念指的是HD中第三層,m/44'/1'/1'的意思是:測試網普通地址,第二個帳號
步驟二:
從
mujE43EZckhHf6i1P2ru9UUg78VTjLwwL3
發送 1666 USDT 到msbuQnXJPcqimUi3eiWFE9oPu15Ce7dphm
這裏 web前端限制了不能填 0.00000546
,因此填了0.00000547
因爲 Omni協議中,vout 找零必須找給發送地址,不然,這筆交易將不會被判斷爲是 Omni交易,只會認爲是發送 0.00000546
的普通BTC交易,因此這裏增長一個 vout,將剩下的錢所有轉給原 SendFrom 地址mujE43EZckhHf6i1P2ru9UUg78VTjLwwL3
步驟三: 構建OP_RETURN:OP_RETURN 6f6d6e6900000000800004e70000000000000682
我在BTC Testnet發的幣 propertyID 爲 2147484903
Field | Example |
---|---|
Transaction version | 0 |
Transaction type | 0 |
Currency identifier | 800004e7(hex) == 2147484903 |
Amount to transfer | 0000000000000682(hex) == 1666 |
最後的交易:b61dee5fc2f4588bcef39c1e6f12fee9b963c311efc6731ba06e351fcc3dbb75
若是以爲構建 OP_RETURN
很麻煩,那麼可使用 Omni 的 maintainer 在 github 發佈的一個工具快速構建OP_RETURN腳本