区块链 - ETH - web3.js

web3.js描述

提供用于和geth通信的js API,使用JSON-RPC与geth通信。提供的API包括查看网络状态、查看本地账户、查看交易、查看区块、编译和部署只能合约、进行转账交易等。 web3.js 中文API

示例合约
pragma solidity ^0.4.15;

contract Proof 
{
    struct FileDetails 
    {
        uint timestamp;
        string owner;
    }
    
    mapping (string => FileDetails) files;
    
    event logFileAddedStatus(bool status, uint timestamp, string owner, string fileHash);
    
    function set(string owner, string fileHash) 
    {
        if(files[fileHash].timestamp == 0) {
            files[fileHash] = FileDetails(block.timestamp, owner);
            logFileAddedStatus(true, block.timestamp, owner, fileHash);
        } else {
            logFileAddedStatus(false, block.timestamp, owner, fileHash);
        }
    }
    
    function get(string fileHash) returns (uint timestamp, string owner) 
    {
        return (files[fileHash].timestamp, files[fileHash].owner);
    }
    
}
复制代码
安装 web3.js
npm install web3
复制代码
创建 web3 对象
var web3 = require("web3")
web3 = new web3(new web3.providers.HttpProvider("http://localhost:8545"));
复制代码
web3 编译合约
let source = "pragma solidity ^0.4.15;contract Proof{...";
let compileData = web3.eth.compile.solidity(source);
复制代码
编译结果
var proofContract = web3.eth.contract([{"constant":false,"inputs":[{"name":"fileHash","type":"string"}],"name":"get","outputs":[{"name":"timestamp","type":"uint256"},{"name":"owner","type":"string"}],"payable":false,"type":"function","stateMutability":"nonpayable"},{"constant":false,"inputs":[{"name":"owner","type":"string"},{"name":"fileHash","type":"string"}],"name":"set","outputs":[],"payable":false,"type":"function","stateMutability":"nonpayable"},{"anonymous":false,"inputs":[{"indexed":false,"name":"status","type":"bool"},{"indexed":false,"name":"timestamp","type":"uint256"},{"indexed":false,"name":"owner","type":"string"},{"indexed":false,"name":"fileHash","type":"string"}],"name":"logFileAddedStatus","type":"event"}]);
var proof = proofContract.new(
   {
     from: web3.eth.accounts[0], 
     data: '0x6060604052341561000f57600080fd5b5b6107a88061001f6000396000f30060606040526000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063693ec85e14610049578063e942b51614610127575b600080fd5b341561005457600080fd5b6100a4600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506101c7565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156100eb5780820151818401525b6020810190506100cf565b50505050905090810190601f1680156101185780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b341561013257600080fd5b6101c5600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610356565b005b60006101d16106c3565b6000836040518082805190602001908083835b60208310151561020a57805182525b6020820191506020810190506020830392506101e4565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600001546000846040518082805190602001908083835b60208310151561027a57805182525b602082019150602081019050602083039250610254565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600101808054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156103455780601f1061031a57610100808354040283529160200191610345565b820191906000526020600020905b81548152906001019060200180831161032857829003601f168201915b50505050509050915091505b915091565b600080826040518082805190602001908083835b60208310151561039057805182525b60208201915060208101905060208303925061036a565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000154141561059d576040805190810160405280428152602001838152506000826040518082805190602001908083835b60208310151561041b57805182525b6020820191506020810190506020830392506103f5565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206000820151816000015560208201518160010190805190602001906104749291906106d7565b509050507f0d3bbc3c02da6ed436712ca1a0f626f1269df703a105f034e4637c7b10fb7ba5600142848460405180851515151581526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156104f35780820151818401525b6020810190506104d7565b50505050905090810190601f1680156105205780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561055a5780820151818401525b60208101905061053e565b50505050905090810190601f1680156105875780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a16106be565b7f0d3bbc3c02da6ed436712ca1a0f626f1269df703a105f034e4637c7b10fb7ba5600042848460405180851515151581526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156106185780820151818401525b6020810190506105fc565b50505050905090810190601f1680156106455780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561067f5780820151818401525b602081019050610663565b50505050905090810190601f1680156106ac5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a15b5b5050565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061071857805160ff1916838001178555610746565b82800160010185558215610746579182015b8281111561074557825182559160200191906001019061072a565b5b5090506107539190610757565b5090565b61077991905b8082111561077557600081600090555060010161075d565b5090565b905600a165627a7a72305820ac2181517115cdc5f9359f3dae5bb95d44d2eb8ca0f7aa0b3f2de8d7c4b824850029', 
     gas: '4700000'
   }, function (e, contract){
    console.log(e, contract);
    if (typeof contract.address !== 'undefined') {
         console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);
    }
 })
复制代码
部署合约

使用web3.eth.contractnew方法

// contract abi
var abi = [{
     name: 'myConstantMethod',
     type: 'function',
     constant: true,
     inputs: [{ name: 'a', type: 'string' }],
     outputs: [{name: 'd', type: 'string' }]
}, {
     name: 'myStateChangingMethod',
     type: 'function',
     constant: false,
     inputs: [{ name: 'a', type: 'string' }, { name: 'b', type: 'int' }],
     outputs: []
}, {
     name: 'myEvent',
     type: 'event',
     inputs: [{name: 'a', type: 'int', indexed: true},{name: 'b', type: 'bool', indexed: false}]
}];

var MyContract = web3.eth.contract(abi);

// instantiate by address
var contractInstance = MyContract.at([address]);

// deploy new contract
var contractInstance = MyContract.new([contructorParam1] [, contructorParam2], {data: '0x12345...', from: myAccount, gas: 1000000});
复制代码
备注

别忘了web3.js 中文API

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值