Solidity

具有多重簽名功能的 Solidity 功能

  • June 6, 2021

我有一個托盤交換的智能合約。我有一個在兩個合作夥伴之間交換托盤的功能。關鍵是,我希望您只能在雙方確認交易時才能執行該功能。

是否有可能編寫具有多重簽名功能的函式?

使用者 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

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