在滿足特定條件之前,我是否可以鎖定交易不被使用
我計劃開設一個電子商務網站,我將通過該網站接受 BTC 作為付款。然而,由於我的網站剛剛啟動,使用者不想在沒有收到貨物的情況下使用 BTC 付款。我有哪些選擇?
你的問題表明了一些比特幣的經驗,所以我將非常技術性。您可能想查找“智能合約”作為關鍵字。在比特幣世界中,我們談論 checklocktimeverify 和 checksequenceverify,以及一些多重簽名(作為託管服務)。有很多例子,例如這裡(這基本上是我在 bitcointalk 上發布的):
IF 2 <Alice's pubkey> <Bob's pubkey> <Escrow's pubkey> 3 CHECKMULTISIG ELSE "30d" CHECKSEQUENCEVERIFY DROP <Alice's pubkey> CHECKSIG ENDIF
或類似的東西:
if <merchant pubkey> checksigverify else <timestamp> checklocktimeverify drop endif <customer pubkey> checksig
恕我直言,n-of-m multisig 是最簡單的契約形式。託管服務是下一層(如上例所示)。他們可以確保僅在滿足特定條件時才支付 BTC。
然後可以創建非常具體的結構,例如:
CHECKSEQUENCEVERIFY:鎖定一些 Satoshis,直到經過特定數量的塊,然後才能使用它們
CHECKLOCKTIMEVERIFY:鎖定一些 Satoshis,直到出現特定數量的塊(也就是我兒子 18 歲……),但使用 2-3 多重簽名來釋放資金,以防更早需要資金
它甚至可以創建 tx 支出,其中條件的雜湊必須等於先前定義的值。在嘗試使用 Oracles(也就是來自“外部”的數據)時,我看到了一些限制,可能是來自交易所的數據,或者來自真實生活的數據(以防死亡)。
Andreas 的“Mastering Bitcoin”(第二版)一書中“Timelocks”一章中的更多範例。
或在這裡:
<https://bitcointalk.org/index.php?topic=1300723.0>
<https://bitcointalk.org/index.php?topic=1558207.0>
<https://bitcointalk.org/index.php?topic=1952248.0>
或在這裡:
<https://www.reddit.com/r/Bitcoin/comments/4kit49/is_it_safe_to_use_cltv_for_recurring_payments/>
<https://www.reddit.com/r/Bitcoin/comments/4p4klg/bitcoin_core_project_the_csv_soft_fork_has/d4i01he/>
和這裡:
<https://en.bitcoin.it/wiki/Timelock>
<https://en.bitcoin.it/wiki/Contracts>