Solidity

bytes32 這個邏輯需要什麼輸入?我試過不同的字元串數據類型,比如“藍色”這個詞……我也嘗試過數字類型……沒有用!

  • May 4, 2022
pragma solidity ^0.8.0;

contract Ballot {

 struct Voter {
   uint weight;
   bool voted;
   address delegate;
   uint vote;
 }

 struct Proposal {
   bytes32 name;
   uint voteCount;
 }

 address public chairperson; 

 mapping(address => Voter) public voters;

 Proposal[] public proposals;

 constructor(bytes32[] memory proposalNames) {
   chairperson = msg.sender;
   voters[chairperson].weight = 1;

   for(uint i = 0; i < proposalNames.length; i++) {
     proposals.push(Proposal({name: proposalNames[i], voteCount: 0}));
   }
 }
}

constructor將類型 bytes32傳遞給智能合約

$$ $$你應該給它這個聲明:

["bytes32","bytes32","bytes32",...]

要生成 bytes32,您可以使用此工具。您將字元串放入第一個文本框中,bytes32/hex從下拉列表中選擇類型,然後您必須複製在第二個文本框中生成的結果。現在,您添加 ‘0’ 直到此 bytes32 生成的長度為 64,而不計算 ‘0x’ 字元。此時,您可以使用我之前聲明的語句並將您的 bytes32 值放入其中。例子:

字元串 =藍色

字節32 = 0x626c7565000000000000000000000000000000000000000000000000000000000000

建構子輸入:

$$ “0x626c756500000000000000000000000000000000000000000000000000000000” $$

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