2016-07-19 17 views
1

Neu zu Solidität und Geth für meine Ausbildung, begann ich mit der Solidity-Online-IDE und dem Geth Dev-Modus Kontrakte einzusetzen. Mein Problem ist, dass ich ein paar verschiedene Möglichkeiten ausprobiert habe, aber nichts scheint wirklich zu funktionieren.Erstellen Sie einen "Transaktions-Handler" Smart-Vertrag

Code:

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); 
    } 
} 

ich diesen Vertrag mit einer Solidität Tutorial auch versucht, aber es auch nicht arbeiten, wie ich erwartet hatte:

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); 
    } 
} 

ich nur ein Smart Vertrag zu machen versuche, dass kann Transaktionen zwischen dem Absender und einem Empfänger vornehmen, aber die Kontostände verschieben sich nicht. Funktioniert das nur abstrakt, um zu lernen, wie Solidität funktioniert oder kann dies die Balance verändern? Danke für Ihre Antworten :)

Antwort

1

Nachdem ich nach Solidität gesucht und gearbeitet habe, fand ich heraus, dass dieser Vertrag tatsächlich abstrakte Transaktionen in HIS-Daten verwandelt. Der Äther wird also nicht wirklich gesendet und die Saldenvariable ist lokal für diesen Vertrag.