Solidity
具有多重簽名功能的 Solidity 功能
我有一個托盤交換的智能合約。我有一個在兩個合作夥伴之間交換托盤的功能。關鍵是,我希望您只能在雙方確認交易時才能執行該功能。
是否有可能編寫具有多重簽名功能的函式?
使用者 Aquila 將您引導到一個很好的資源,但如果您只有兩個合作夥伴,您可以有一個更簡單的實現。查看下面的程式碼,希望它能讓您大致了解如何以最基本的方式實現該功能。
pragma solidity^0.4.25; contract SimpleMultisig { address one; address two; mapping(address => bool) signed; constructor() public { one = 0x14723a09acff6d2a60dcdf7aa4aff308fddc160c; two = 0x4b0897b0513fdc7c541b6d9d7e929c4e5364d2db; } function Sign() public { require (msg.sender == one || msg.sender == two); require (!signed[msg.sender]); signed[msg.sender] = true; } function Action() public returns (string) { require (signed[one] && signed[two]); return "Your action here"; } }
(忽略縮進)
此外,您不需要在建構子中預先設置地址,您可以讓另一個函式執行此操作,並允許更改它們。
是否有可能編寫具有多重簽名功能的函式?
是的。有不同的選擇,你可以看看這個https://github.com/christianlundkvist/simple-multisig/blob/master/contracts/SimpleMultiSig.sol