2016-07-19 7 views
1

私の訓練のために、solidityとgethの新機能である、solidityオンラインIDEとgeth devモードを使用してcontrctsのデプロイを開始しました。私の問題は、いくつかの異なる方法で試してみましたが、何も本当にうまくいかないようです。"Transaction Handler"スマートコントラクトを作成する

コード:

contract Transaction { 
    address public owner; 
    mapping (address => uint) public balances; 

    function Transaction() { 
     owner = msg.sender; 
    } 

    function validateTransaction (address receiver, uint amount) constant returns (bool) { 
    if (balances[owner] < amount || owner == receiver || amount == 0) 
     return (false); 
    balances[owner] -= msg.value; 
    return (true); 
    } 

    function transact (address receiver, uint amount) { 
    if (!validateTransaction(receiver, amount)) 
     return ; 
    balances[receiver] += msg.value; 
    } 

    function remove() { 
     if (msg.sender == owner) 
     selfdestruct(owner); 
    } 
} 

私はまた、堅牢チュートリアルのこの契約を試してみましたが、私は予想通り、それはまた、動作しません:

contract Coin { 
    // The keyword "public" makes those variables 
    // readable from outside. 
    address public minter; 
    mapping (address => uint) public balances; 

    // Events allow light clients to react on 
    // changes efficiently. 
    event Sent(address from, address to, uint amount); 

    // This is the constructor whose code is 
    // run only when the contract is created. 
    function Coin() { 
     minter = msg.sender; 
    } 

    function mint(address receiver, uint amount) { 
     if (msg.sender != minter) return; 
     balances[receiver] += amount; 
    } 

    function send(address receiver, uint amount) { 
     if (balances[msg.sender] < amount) return; 
     balances[msg.sender] -= amount; 
     balances[receiver] += amount; 
     Sent(msg.sender, receiver, amount); 
    } 
} 

は、私はちょうどそのスマートな契約をしようとしています送信者と受信者の間で取引を行うことができますが、勘定残高は移動しません。その機能は抽象性だけであり、どのようにして強固性が働くのか、これによって実際に残高が変化するのかを知ることができますか?あなたの答えをありがとう:)

答えて

1

確かにより深く検索して作業した後、私は実際に、この契約が抽象的な取引をHISデータにすることを発見しました。したがって、エーテルは本当に送信されず、残高変数はこの契約のローカルです。

関連する問題