Contract-Design

如何在智能合約中接受比特幣支付?那將是什麼程式碼?

  • January 18, 2019

我將創建我的個人代幣,我希望能夠以 ETH 和 BTC 的價格出售它。我知道如何為 ETH 添加賣出功能,但如何為 BTC 賣出代幣?

我將使用的 ETH 賣出函式如下:

function sell(uint256 amount) {
       if (balanceOf[msg.sender] < amount ) throw;
       balanceOf[this] += amount;
       balanceOf[msg.sender] -= amount;
       msg.sender.send(amount * sellPrice);
       Transfer(msg.sender, this, amount);
}

這不像 ETH 那樣容易,因為合約不能擁有 BTC 地址。但是,您可以使用諸如http://btcrelay.org/之類的服務來查看 btc 地址。

引自 Vitalik Buterin 在 reddit 上:(https://www.reddit.com/r/ethereum/comments/4d5z1y/is_it_possible_for_bitcoin_to_live_on_the/

BTC -> 乙太坊兌換可以做的很好;困難的部分是乙太坊 -> BTC 轉換。需要某種側鏈協議來“理解”在乙太坊區塊鏈上創建的收據;這是不平凡的,必須作為軟分叉完成並被 BTC 礦工接受;如果您不想這樣做,那麼兩個替代路線是(1)與獨立和已知方的聯合多簽掛鉤,以及(2)在乙太坊上設置保證金以激勵參與者正確簽署交易的多簽掛鉤。(2) 確實依賴於 ETH 繼續具有價值並且不會過快下跌,否則抵押品可能突然不足以提供足夠的動機不竊取 BTC。

引用自:https://ethereum.stackexchange.com/questions/2724