Solidity

代幣合約源碼未驗證

  • May 17, 2018

嗨,我已經用你的程式碼創建了我的令牌,我使用了 https://github.com/ConsenSys/Tokens/blob/master/contracts/eip20/EIP20.sol 結束 https://github.com/ConsenSys/Tokens/blob/ master/contracts/eip20/EIP20Interface.sol 我已經在https://remix.ethereum.org中創建了我的令牌 ETQ (真實未測試)

現在我必須添加我的網站和徽標的連結,我需要驗證我的原始碼

我怎麼能這樣做?

我在哪裡可以看到我的建構子參數 ABI 編碼?

請幫我

我在https://remix.ethereum.org中的程式碼 我有兩個文件

EIP20介面.sol

   // Abstract contract for the full ERC 20 Token standard
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
pragma solidity ^0.4.18;


contract EIP20Interface {
   /* This is a slight change to the ERC20 base standard.
   function totalSupply() constant returns (uint256 supply);
   is replaced with:
   uint256 public totalSupply;
   This automatically creates a getter function for the totalSupply.
   This is moved to the base contract since public getter functions are not
   currently recognised as an implementation of the matching abstract
   function by the compiler.
   */
   /// total amount of tokens
   uint256 public totalSupply;

   /// @param _owner The address from which the balance will be retrieved
   /// @return The balance
   function balanceOf(address _owner) public view returns (uint256 balance);

   /// @notice send `_value` token to `_to` from `msg.sender`
   /// @param _to The address of the recipient
   /// @param _value The amount of token to be transferred
   /// @return Whether the transfer was successful or not
   function transfer(address _to, uint256 _value) public returns (bool success);

   /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`
   /// @param _from The address of the sender
   /// @param _to The address of the recipient
   /// @param _value The amount of token to be transferred
   /// @return Whether the transfer was successful or not
   function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);

   /// @notice `msg.sender` approves `_spender` to spend `_value` tokens
   /// @param _spender The address of the account able to transfer the tokens
   /// @param _value The amount of tokens to be approved for transfer
   /// @return Whether the approval was successful or not
   function approve(address _spender, uint256 _value) public returns (bool success);

   /// @param _owner The address of the account owning tokens
   /// @param _spender The address of the account able to transfer the tokens
   /// @return Amount of remaining tokens allowed to spent
   function allowance(address _owner, address _spender) public view returns (uint256 remaining);

   // solhint-disable-next-line no-simple-event-func-name  
   event Transfer(address indexed _from, address indexed _to, uint256 _value); 
   event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

在 Taouaf.sol 結束我有這個

/*
Implements EIP20 token standard: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
.*/


pragma solidity ^0.4.18;

import "./EIP20Interface.sol";


contract Taouaf is EIP20Interface {

   uint256 constant private MAX_UINT256 = 2**256 - 1;
   mapping (address => uint256) public balances;
   mapping (address => mapping (address => uint256)) public allowed;
   /*
   NOTE:
   The following variables are OPTIONAL vanities. One does not have to include them.
   They allow one to customise the token contract & in no way influences the core functionality.
   Some wallets/interfaces might not even bother to look at this information.
   */
   string public name;                   //fancy name: eg Simon Bucks
   uint8 public decimals;                //How many decimals to show.
   string public symbol;                 //An identifier: eg SBX

   function Taouaf(
       uint256 _initialAmount,
       string _tokenName,
       uint8 _decimalUnits,
       string _tokenSymbol
   ) public {
       balances[msg.sender] = _initialAmount;               // Give the creator all initial tokens
       totalSupply = _initialAmount;                        // Update total supply
       name = _tokenName;                                   // Set the name for display purposes
       decimals = _decimalUnits;                            // Amount of decimals for display purposes
       symbol = _tokenSymbol;                               // Set the symbol for display purposes
   }

   function transfer(address _to, uint256 _value) public returns (bool success) {
       require(balances[msg.sender] >= _value);
       balances[msg.sender] -= _value;
       balances[_to] += _value;
       Transfer(msg.sender, _to, _value);
       return true;
   }

   function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
       uint256 allowance = allowed[_from][msg.sender];
       require(balances[_from] >= _value && allowance >= _value);
       balances[_to] += _value;
       balances[_from] -= _value;
       if (allowance < MAX_UINT256) {
           allowed[_from][msg.sender] -= _value;
       }
       Transfer(_from, _to, _value);
       return true;
   }

   function balanceOf(address _owner) public view returns (uint256 balance) {
       return balances[_owner];
   }

   function approve(address _spender, uint256 _value) public returns (bool success) {
       allowed[msg.sender][_spender] = _value;
       Approval(msg.sender, _spender, _value);
       return true;
   }

   function allowance(address _owner, address _spender) public view returns (uint256 remaining) {
       return allowed[_owner][_spender];
   }   
}

我的 ABI 是

0000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000e4574686572205175616c6966656400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034554510000000000000000000000000000000000000000000000000000000000

我怎麼能把這段程式碼放在這裡https://etherscan.io/verifyContract?a=0x38f10839dcbf15936f79bee139ceaf484edaca46

驗證我的 TOKEN

我怎麼能這樣做?

  1. 從您的兩個源文件生成平面 sol 文件,例如使用solidity-flattener。將此平面文件的內容插入“在下面輸入 Solidity 契約程式碼”欄位
  2. 選擇您在 Remix 中使用的編譯器版本
  3. 根據此標誌在 Remix 中是否切換,選擇優化標誌真/假
  4. 從源複製契約名稱並將其粘貼到“契約名稱”欄位

我在哪裡可以看到我的建構子參數 ABI 編碼?

  1. Etherscan 自動插入 ABI 編碼的建構子參數。你不應該照顧他們。
  2. 點擊“驗證並發布”按鈕

我通過以下步驟驗證了您的契約:https ://etherscan.io/address/0x38f10839dcbf15936f79bee139ceaf484edaca46#code

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