2

主にFrontier Webサイトの「ハウツー」を使用して、登録済みのイーサリアム「トークン」を作成できました。私はクラウドソーシング契約を進めて、世界で何か良いことをすることができる資金調達イベントになる資金を調達するつもりですが、それについては後で詳しく説明します. トークン作成テキストには、新しいトークンの機能を改善するための次の提案が含まれています。たとえば、現在のブロックを見つけた人に報酬を与えるトランザクションを作成することで、イーサリアム マイナーに報酬を与えることができます。

mapping (uint => address) miningReward;
function claimMiningReward() {
if (miningReward[block.number] == 0) {
 coinBalanceOf[block.coinbase] += 1;
 miningReward[block.number] = block.coinbase;
  }
}

このコードをコントラクトに貼り付けるだけで、自然にエラー メッセージが表示されます。

Q: 未成年者に私のトークンの 1 つで報酬を与えることができるようにするには、何を微調整、入力、変更する必要がありますか? 採掘された新しいブロックごとに。ありがとうございました。

4

2 に答える 2

0

あなたがまだこれを理解したかどうかはわかりません。同じ問題を抱えている他の人は、次のスニペットを試してください。

contract MyToken { 
    /* Public variables of the token */
    string public name;
    string public symbol;
    uint8 public decimals;

    /* This creates an array with all balances */
    mapping (address => uint256) public balanceOf;

    /* This generates a public event on the blockchain that will notify clients */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /* Initializes contract with initial supply tokens to the creator of the contract */
    function MyToken(uint256 _supply, string _name, string _symbol, uint8 _decimals) {
        /* if supply not given then generate 1 million of the smallest unit of the token */
        if (_supply == 0) _supply = 1000000;

        /* Unless you add other functions these variables will never change */
        balanceOf[msg.sender] = _supply;
        name = _name;     
        symbol = _symbol;

        /* If you want a divisible token then add the amount of decimals the base unit has  */
        decimals = _decimals;
    }

    /* Send coins */
    function transfer(address _to, uint256 _value) {
        /* if the sender doenst have enough balance then stop */
        if (balanceOf[msg.sender] < _value) throw;
        if (balanceOf[_to] + _value < balanceOf[_to]) throw;

        /* Add and subtract new balances */
        balanceOf[msg.sender] -= _value;
        balanceOf[_to] += _value;

        /* Notifiy anyone listening that this transfer took place */
        Transfer(msg.sender, _to, _value);
    }
}            

次に、コードを追加してマイナーに報酬を与えますが、次のように「coinBalanceOf」を「balanceOf」に変更します。

mapping (uint => address) miningReward;

function claimMiningReward() {
    if (miningReward[block.number] == 0) {
        balanceOf[block.coinbase] += 1;
        miningReward[block.number] = block.coinbase;
    }
}

したがって、最終的な契約は次のようになります。

contract MyToken { 
    /* Public variables of the token */
    string public name;
    string public symbol;
    uint8 public decimals;

    /* This creates an array with all balances */
    mapping (address => uint256) public balanceOf;

    /* This generates a public event on the blockchain that will notify clients */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /* Initializes contract with initial supply tokens to the creator of the contract */
    function MyToken(uint256 _supply, string _name, string _symbol, uint8 _decimals) {
        /* if supply not given then generate 1 million of the smallest unit of the token */
        if (_supply == 0) _supply = 1000000;

        /* Unless you add other functions these variables will never change */
        balanceOf[msg.sender] = _supply;
        name = _name;     
        symbol = _symbol;

        /* If you want a divisible token then add the amount of decimals the base unit has  */
        decimals = _decimals;
    }

    /* Send coins */
    function transfer(address _to, uint256 _value) {
        /* if the sender doenst have enough balance then stop */
        if (balanceOf[msg.sender] < _value) throw;
        if (balanceOf[_to] + _value < balanceOf[_to]) throw;

        /* Add and subtract new balances */
        balanceOf[msg.sender] -= _value;
        balanceOf[_to] += _value;

        /* Notifiy anyone listening that this transfer took place */
        Transfer(msg.sender, _to, _value);
    }

    mapping (uint => address) miningReward;

    function claimMiningReward() {
        if (miningReward[block.number] == 0) {
            balanceOf[block.coinbase] += 1;
            miningReward[block.number] = block.coinbase;
        }
    }

} 
于 2016-02-17T00:42:57.200 に答える