以太坊 智能合约 示例

发代币智能合约

pragma solidity ^0.4.2;
contract Token {
             address issuer;
             mapping (address => uint) balances;

             event Issue(address account, uint amount);
             event Transfer(address from, address to,uint amount);

             function Token() {
                 issuer = msg.sender;
             }

             function issue(address account, uintamount) {
                 if (msg.sender != issuer) throw;
                 balances[account] += amount;
             }

             function transfer(address to, uint amount){
                 if (balances[msg.sender] < amount)throw;

                 balances[msg.sender] -= amount;
                 balances[to] += amount;

                 Transfer(msg.sender, to, amount);
             }

             function getBalance(address account)constant returns (uint) {
                 return balances[account];
             }
         }

将编译好的WEB3DEPLOY直接粘贴到终端

var tokenContract = web3.eth.contract([{"constant":false,"inputs":[{"name":"account","type":"address"},{"name":"amount","type":"uint256"}],"name":"issue","outputs":[],"payable":false,"type":"function","stateMutability":"nonpayable"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"type":"function","stateMutability":"nonpayable"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function","stateMutability":"view"},{"inputs":[],"payable":false,"type":"constructor","stateMutability":"nonpayable"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Issue","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Transfer","type":"event"}]);
var token = tokenContract.new(
   {
     from: web3.eth.accounts[0], 
     data: '0x6060604052341561000f57600080fd5b5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b6103d2806100616000396000f30060606040526000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063867904b414610054578063a9059cbb14610096578063f8b2cb4f146100d8575b600080fd5b341561005f57600080fd5b610094600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610125565b005b34156100a157600080fd5b6100d6600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506101d2565b005b34156100e357600080fd5b61010f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061035c565b6040518082815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561018057600080fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b5050565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561021e57600080fd5b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef338383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a15b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b9190505600a165627a7a7230582031916717e1958a24ce20934f533c867c7d3b2defbb6ed724b3c1275a806dd85a0029', 
     gas: '4700000'
   }, function (e, contract){
    console.log(e, contract);
    if (typeof contract.address !== 'undefined') {
         console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);
    }
 })

因为在以太坊中,每一个操作实质上都是一笔交易,所以在发不完智能合约之后,需要该节点或者其他节点进行交易确认(挖矿),交易确认成功后,智能合约才会真正发布

交易确认时终端会打印出该笔交易的address和transactionHash相关信息

例如:

Contract mined! address: 0xfcfd0983081740b9037ede82f59c09c05f14cef5 transactionHash: 0x52ea501f63b95e3c0234a8734ac75afe5fee96d1cc1079ef320bd02f531b91ce

交易信息
{
  blockHash: "0x90ba780d9e27f4f7a86fd10d57dff209ce0f96df4626625e65fcf8c99a362937",
  blockNumber: 291,
  from: "0x8ccc7b0cc82dc5499ca4234a081a27c3fe55fa59",
  gas: 4700000,
  gasPrice: 18000000000,
  hash: "0x79c8c11e9b23696bdca5589b4033fbd7afe6357022412df6d6c2a875b53d5441",
  input: "0x60606040526040805190810160405280600481526020017f48302e310000000000000000000000000000000000000000000000000000000081525060069080519060200190620000519291906200013a565b5034156200005e57600080fd5b6040516200144a3803806200144a833981016040528080519060200190919080518201919060200180519060200190919080518201919050505b836000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550836002819055508260039080519060200190620000fa9291906200013a565b5081600460006101000a81548160ff021916908360ff16021790555080600590805190602001906200012e9291906200013a565b505b50505050620001e9565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200017d57805160ff1916838001178555620001ae565b82800160010185558215620001ae579182015b82811115620001ad57825182559160200191906001019062000190565b5b509050620001bd9190620001c1565b5090565b620001e691905b80821115620001e2576000816000905550600101620001c8565b5090565b90565b61125180620001f96000396000f300606060405236156100c3576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100d6578063095ea7b31461016557806318160ddd146101bf57806323b872dd146101e8578063313ce5671461026157806354fd4d501461029057806370a082311461031f578063862b092b1461036c57806395d89b41146103fb578063a9059cbb1461048a578063cae9ca51146104e4578063dd62ed3e14610581578063f1850af8146105ed575b34156100ce57600080fd5b5b600080fd5b005b34156100e157600080fd5b6100e961067c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561012a5780820151818401525b60208101905061010e565b50505050905090810190601f1680156101575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017057600080fd5b6101a5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061071a565b604051808215151515815260200191505060405180910390f35b34156101ca57600080fd5b6101d261080d565b6040518082815260200191505060405180910390f35b34156101f357600080fd5b610247600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610813565b604051808215151515815260200191505060405180910390f35b341561026c57600080fd5b610274610a91565b604051808260ff1660ff16815260200191505060405180910390f35b341561029b57600080fd5b6102a3610aa4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102e45780820151818401525b6020810190506102c8565b50505050905090810190601f1680156103115780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561032a57600080fd5b610356600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b42565b6040518082815260200191505060405180910390f35b341561037757600080fd5b61037f610b8b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103c05780820151818401525b6020810190506103a4565b50505050905090810190601f1680156103ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561040657600080fd5b61040e610c34565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561044f5780820151818401525b602081019050610433565b50505050905090810190601f16801561047c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561049557600080fd5b6104ca600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610cd2565b604051808215151515815260200191505060405180910390f35b34156104ef57600080fd5b610567600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610e3d565b604051808215151515815260200191505060405180910390f35b341561058c57600080fd5b6105d7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110e0565b6040518082815260200191505060405180910390f35b34156105f857600080fd5b610600611168565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106415780820151818401525b602081019050610625565b50505050905090810190601f16801561066e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107125780601f106106e757610100808354040283529160200191610712565b820191906000526020600020905b8154815290600101906020018083116106f557829003601f168201915b505050505081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600190505b92915050565b60025481565b6000816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156108df575081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156108eb5750600082115b15610a8057816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610a8a565b60009050610a8a565b5b9392505050565b600460009054906101000a900460ff1681565b60068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b3a5780601f10610b0f57610100808354040283529160200191610b3a565b820191906000526020600020905b815481529060010190602001808311610b1d57829003601f168201915b505050505081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b610b93611211565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c295780601f10610bfe57610100808354040283529160200191610c29565b820191906000526020600020905b815481529060010190602001808311610c0c57829003601f168201915b505050505090505b90565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cca5780601f10610c9f57610100808354040283529160200191610cca565b820191906000526020600020905b815481529060010190602001808311610cad57829003601f168201915b505050505081565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610d225750600082115b15610e2d57816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610e37565b60009050610e37565b5b92915050565b600082600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff1660405180807f72656365697665417070726f76616c28616464726573732c75696e743235362c81526020017f616464726573732c627974657329000000000000000000000000000000000000815250602e01905060405180910390207c01000000000000000000000000000000000000000000000000000000009004338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828051906020019080838360005b8381101561107f5780820151818401525b602081019050611063565b50505050905090810190601f1680156110ac5780820380516001836020036101000a031916815260200191505b5094505050505060006040518083038160008761646e5a03f19250505015156110d457600080fd5b600190505b9392505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b92915050565b611170611211565b60058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112065780601f106111db57610100808354040283529160200191611206565b820191906000526020600020905b8154815290600101906020018083116111e957829003601f168201915b505050505090505b90565b6020604051908101604052806000815250905600a165627a7a72305820b21c17c5b87c981bdd006a80f06f3829e3ca05b62e2f31375505f1d263db9fee002900000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000074d534a434f494e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034d534a0000000000000000000000000000000000000000000000000000000000",
  nonce: 20,
  r: "0x95a2c28762b88183288c4cfad3b74d389c32f4285bd7a4e531b0b2c6cd458258",
  s: "0x961b90055e80cd2f8793bf966796795d12d2f04043e46a6de8da61eb10d0961",
  to: null,
  transactionIndex: 0,
  v: "0xb3",
  value: 0
}

备注::::发布智能合约交易信息里的input放入的内容就是  智能合约 编译成的bytecode码 例如:交易代币时候用到的transfer方法 在bytecode码里面被编译成了 a9059cbb 这个值在使用JSONRPC与以太坊通讯的时候会用到

操作:

充值
token.issue.sendTransaction(eth.accounts[0],100, {from: eth.accounts[0]});

发送 token
token.transfer(eth.accounts[1], 30, {from:eth.accounts[0]})

查看余额
token.getBalance()

猜你喜欢

转载自blog.csdn.net/mashengjun1989/article/details/81697699