3.1 web3.js at version 0.2x.x

Web3 JavaScript app API for 0.2x.x

本文基本上是翻譯自 JavaScript API。但是補(bǔ)充了詳細(xì)的實(shí)例代碼负溪。

注意:這些文檔適用于 web3.js 版本 0.2x.x颠区。如果使用的是 web3.js 1.0错森,請(qǐng)參閱此文檔扁眯。要使應(yīng)用程序在以太坊上運(yùn)行疙挺,可以使用 web3.js 庫(kù) 提供的 web3 對(duì)象钮呀。在此基礎(chǔ)上剑鞍,它通過(guò) RPC 調(diào)用 與本地節(jié)點(diǎn)通信。 web3.js 適用于暴露 RPC 層的任何以太坊節(jié)點(diǎn)行楞。 web3 包含 eth 對(duì)象 - web3.eth(特別是以太坊區(qū)塊鏈交互)和 shh 對(duì)象 - web3.shh(用于 Whisper 交互)攒暇。隨著時(shí)間的推移,我們將為每個(gè)其他 web3 協(xié)議引入其他對(duì)象子房。可以在這里找到工作示例形用。如果想使用 web3.js 查看一些更復(fù)雜的示例,請(qǐng)查看這些有用的應(yīng)用程序模式证杭。

1. 開(kāi)始

1.1 安裝 web3

首先田度,需要將 web3.js 放入項(xiàng)目中。這可以使用以下方法完成:

  • npm: npm install web3 or npm install web3@0.20.6 or npm install web3@0.20.6 --save
  • vanilla: 鏈接 dist./web3.min.js 然后需要?jiǎng)?chuàng)建一個(gè) web3 實(shí)例解愤,設(shè)置一個(gè)提供者镇饺。要確保在 mist 中時(shí)不覆蓋已設(shè)置的 provider,請(qǐng)首先檢查 web3 是否可用:
if (typeof web3 !== 'undefined') {
    web3 = new Web3(web3.currentProvider);
} else {
    // set the provider you want from Web3.providers
    web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
}

之后送讲,可以使用 web3 對(duì)象的 API奸笤。這實(shí)際上是監(jiān)控 coinbase 最新余額的示例,見(jiàn)我們的 github 倉(cāng)庫(kù)哼鬓。

1.2 使用回調(diào)

由于此 API 旨在與本地 RPC 節(jié)點(diǎn)一起使用监右,因此默認(rèn)情況下其所有函數(shù)都使用同步 HTTP 請(qǐng)求。如果要進(jìn)行異步請(qǐng)求异希,可以將可選回調(diào)作為最后一個(gè)參數(shù)傳遞給大多數(shù)函數(shù)健盒。所有回調(diào)都使用錯(cuò)誤的第一個(gè)回調(diào)樣式

web3.eth.getBlock(48, function(error, result){
   if(!error)
       console.log(JSON.stringify(result));
   else
       console.error(error);
})

1.3 批處理請(qǐng)求

批處理請(qǐng)求允許排隊(duì)請(qǐng)求并一次性處理它們。注意批量請(qǐng)求不會(huì)更快称簿!實(shí)際上扣癣,在某些情況下,一次性地發(fā)出許多請(qǐng)求會(huì)更快憨降,因?yàn)檎?qǐng)求是異步處理的父虑。批處理請(qǐng)求主要用于確保請(qǐng)求的串行處理。

var batch = web3.createBatch();
batch.add(web3.eth.getBalance.request('0x0000000000000000000000000000000000000000', 'latest', callback));
batch.add(web3.eth.contract(abi).at(address).balance.request(address, callback2));
batch.execute();
var Web3 = require('web3');
var web3 = new Web3();

var rpcUrl = "http://localhost:7545";

web3.setProvider(new web3.providers.HttpProvider(rpcUrl));

console.log('Test batch requests.')

var batch = web3.createBatch();

batch.add(web3.eth.getBlock.request(0, function(error, result) {
    if(!error) {
        console.log('\nresult: ', result);
        // console.log(JSON.stringify(result));
    }
    else {
        console.error(error);
    }
}));

batch.add(web3.eth.getBlock.request(1, function(error, result) {
    if(!error) {
        console.log('\nresult: ', result);
        // console.log(JSON.stringify(result));
    }
    else {
        console.error(error);
    }
}));

batch.add(web3.eth.getBlock.request(2, function(error, result) {
    if(!error) {
        console.log('\nresult: ', result);
        // console.log(JSON.stringify(result));
    }
    else {
        console.error(error);
    }
}));

batch.execute();

1.4 關(guān)于web3.js中大數(shù)字的說(shuō)明

我們將始終獲得數(shù)字值的BigNumber對(duì)象授药,因?yàn)镴avaScript無(wú)法正確處理大數(shù)字频轿。請(qǐng)看以下示例:

"101010100324325345346456456456456456456"
// "101010100324325345346456456456456456456"
101010100324325345346456456456456456456
// 1.0101010032432535e+38

web3.js取決于BigNumber庫(kù)并自動(dòng)添加它垂涯。實(shí)踐下來(lái),有時(shí)候還是需要手動(dòng)安裝 `npm install bignumber.js'

var balance = new BigNumber('131242344353464564564574574567456');
// or var balance = web3.eth.getBalance(someAddress);
balance.plus(21).toString(10); // toString(10) converts it to a number string
// "131242344353464564564574574567477"

下一個(gè)示例不起作用航邢,因?yàn)槲覀冇谐^(guò)20個(gè)浮點(diǎn)耕赘,因此建議始終在wei中保持余額,并在呈現(xiàn)給用戶時(shí)僅將其轉(zhuǎn)換為其他單位:

var balance = new BigNumber('13124.234435346456466666457455567456');
 balance.plus(21).toString(10); // toString(10) converts it to a number string, but can only show upto 20 digits
// "13145.23443534645646666646" // your number will be truncated after the 20th digit

2. Web3.js API Reference

2.1 web3

web3對(duì)象提供了所有的方法膳殷。

示例:

var Web3 = require('web3');
// create an instance of web3 using the HTTP provider.
// NOTE in mist web3 is already available, so check first if it's available before instantiating
var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));

使用HTTP基本身份驗(yàn)證的示例

var Web3 = require('web3');
var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545", 0, BasicAuthUsername, BasicAuthPassword));
//Note: HttpProvider takes 4 arguments (host, timeout, user, password)

2.2 version

2.2.1 api

接口:

web3.version.api

返回值:

String - 以太坊js api版本操骡。

示例:
var version = web3.version.api;
console.log(version); // "0.2.0"

2.2.2 node/getNode

接口:

web3.version.node

web3.version.node
// or async
web3.version.getNode(callback(error, result){ ... })
返回值:

String - client/node 版本。

示例:

var version = web3.version.node;
console.log(version); // "Mist/v0.9.3/darwin/go1.4.1"

2.2.3 network/getNetwork

接口:

web3.version.network

web3.version.network
// or async
web3.version.getNetwork(callback(error, result){ ... })
返回值:

String - 網(wǎng)絡(luò)ID赚窃。

示例:
var version = web3.version.network;
console.log(version); // 54

2.2.4 ethereum/getEthereum

接口:

web3.version.ethereum

web3.version.ethereum
// or async
web3.version.getEthereum(callback(error, result){ ... })

返回值:
String - 以太坊協(xié)議版本

示例:

var version = web3.version.ethereum;
console.log(version); // 60

2.2.5 whisper/getWhisper

接口:

web3.version.whisper

web3.version.whisper
// or async
web3.version.getWhisper(callback(error, result){ ... })
返回值:

String - whisper 協(xié)議版本

示例:
var version = web3.version.whisper;
console.log(version); // 20

2.3 isConnected()

接口:

web3.isConnected

web3.isConnected()

應(yīng)調(diào)用以檢查是否存在與節(jié)點(diǎn)的連接册招。

參數(shù):

none

返回值

Boolean

示例:

if(!web3.isConnected()) {
 
  // show some dialog to ask the user to start a node
} else {

  // start web3 filters, calls, etc
 
}

2.4 setProvider(provider)

接口:

web3.setProvider

 web3.setProvider(provider)
參數(shù):

none

返回值

undefined

示例:

web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545')); // 8080 for cpp/AZ, 8545 for go/mist

2.5 currentProvider

接口:

web3.currentProvider

web3.currentProvider

將包含當(dāng)前 provider(如果已設(shè)置)。這可以用于檢查 mist 等是否已經(jīng)設(shè)置了 provider勒极。

返回值:

Object - provider 集合或 null

示例:
// Check if mist etc. already set a provider
if(!web3.currentProvider)
   web3.setProvider(new web3.providers.HttpProvider("http://localhost:8545"));

2.6 reset()

接口:

web3.reset

web3.reset(keepIsSyncing)

應(yīng)調(diào)用重置web3的狀態(tài)是掰。重置除經(jīng)理以外的一切。卸載所有過(guò)濾器辱匿。停止 polling键痛。

參數(shù):
  1. Boolean - 如果為 true,它將卸載所有過(guò)濾器匾七,但將保留web3.eth.isSyncing()輪詢
返回值:

undefined

示例:
web3.reset();

2.7 sha3(string, options)

接口:

web3.sha3

web3.sha3(string [, options])
參數(shù):
  1. String - 要使用Keccak-256 SHA3算法進(jìn)行哈希處理的字符串
  2. Object - (可選)如果要散列的字符串以十六進(jìn)制編碼絮短,則將 encoding 設(shè)置為 hex。前導(dǎo)0x將自動(dòng)被忽略昨忆。
返回值:

String - 給定數(shù)據(jù)的Keccak-256 SHA3丁频。

示例:
var hash = web3.sha3("Some string to be hashed");
console.log(hash); // "0xed973b234cf2238052c9ac87072c71bcf33abc1bbd721018e0cca448ef79b379"
var hashOfHash = web3.sha3(hash, {encoding: 'hex'});
console.log(hashOfHash); // "0x85dd39c91a64167ba20732b228251e67caed1462d4bcf036af88dc6856d0fdcc"

2.8 toHex(stringOrNumber)

接口:

web3.toHex

web3.toHex(mixed);

將任何值轉(zhuǎn)換為HEX。

參數(shù):
  1. String|Number|Object|Array|BigNumber - 要解析為HEX的值邑贴。如果它是一個(gè)對(duì)象或數(shù)組席里,它將首先是JSON.stringify。如果它是一個(gè)BigNumber拢驾,它將使它成為數(shù)字的HEX值奖磁。
返回值:

String - mixed 的十六進(jìn)制字符串。

示例:
var str = web3.toHex({test: 'test'});
console.log(str); // '0x7b2274657374223a2274657374227d'

2.9 toAscii(hexString)

接口:

web3.toAscii

web3.toAscii(hexString);

將HEX字符串轉(zhuǎn)換為ASCII字符串独旷。

參數(shù):
  1. String - 要轉(zhuǎn)換為ascii的HEX字符串。
示例:
var str = web3.toAscii("0x657468657265756d000000000000000000000000000000000000000000000000");
console.log(str); // "ethereum"

2.10 fromAscii(textString)

接口:

web3.fromAscii

web3.fromAscii(string);

將任何ASCII字符串轉(zhuǎn)換為HEX字符串寥裂。

參數(shù):
  1. String - 要轉(zhuǎn)換為HEX的ASCII字符串嵌洼。
返回值:

String - 轉(zhuǎn)換后的HEX字符串。

示例:
var str = web3.fromAscii('ethereum');
console.log(str); // "0x657468657265756d"

2.11 toDecimal(hexString)

接口:

web3.toDecimal

web3.toDecimal(hexString);

將HEX字符串轉(zhuǎn)換為其數(shù)字表示形式封恰。

參數(shù):
  1. String - 要轉(zhuǎn)換為數(shù)字的HEX字符串麻养。

返回值:
Number - 表示數(shù)據(jù) hexString 的數(shù)字。

示例:
var number = web3.toDecimal('0x15');
console.log(number); // 21

2.12 fromDecimal(number)

接口:

web3.fromDecimal

web3.fromDecimal(number);

將數(shù)字或數(shù)字字符串轉(zhuǎn)換為其HEX表示诺舔。

參數(shù):
  1. Number|String - 要轉(zhuǎn)換為HEX字符串的數(shù)字鳖昌。
返回值:

Number - 表示給定 number 的HEX字符串备畦。

示例:
var value = web3.fromDecimal('21');
console.log(value); // "0x15"

2.13 fromWei(numberStringOrBigNumber, unit)

接口:

web3.fromWei

web3.fromWei(number, unit)

將多個(gè)wei轉(zhuǎn)換為以下以太坊單位:

  • Gwei
  • Kwei
  • Mwei / babbage / ether / femtoether
  • ether
  • finney / gether / grand / gwei
  • kether / kwei / lovelace / mether / micro
  • microether / milli / milliether
  • mwei / nano/ nanoether
  • noether
  • picoether / shannon
  • szabo
  • tether
  • wei
參數(shù):
  1. Number|String|BigNumber - 數(shù)字或BigNumber實(shí)例。
  2. String - 以上以太的單位之一许昨。
返回值:

String|Number - 它是一個(gè)數(shù)字字符串懂盐,或一個(gè)BigNumber實(shí)例,具體取決于給定的 number 參數(shù)糕档。

示例:
var value = web3.fromWei('21000000000000', 'finney');
console.log(value); // "0.021"

2.14 toWei(numberStringOrBigNumber, unit)

接口:
web3.toWei

web3.toWei(number, unit)

將以太坊單位轉(zhuǎn)換為wei莉恼。可能的單位是:

  • kwei / ada
  • mwei / babbage
  • gwei / shannon
  • szabo
  • finney
  • ether
  • kether / grand / einstein
  • mether
  • gether
  • tether
參數(shù):
  1. Number|String|BigNumber - 數(shù)字或BigNumber實(shí)例速那。
  2. String - 以上以太的單位之一俐银。
返回值:

String|Number - 它是一個(gè)數(shù)字字符串,或一個(gè)BigNumber實(shí)例端仰,具體取決于給定的 number 參數(shù)捶惜。

示例:
var value = web3.toWei('1', 'ether');
console.log(value); // "1000000000000000000"

2.15 toBigNumber(numberOfHexString)

接口:

web3.toBigNumber

web3.toBigNumber(numberOrHexString);

將給定數(shù)字轉(zhuǎn)換為 BigNumber 實(shí)例。請(qǐng)參閱 BigNumber 上的注釋荔烧。

參數(shù):
  1. Number|String - 數(shù)字吱七、數(shù)字字符串或HEX字符串的數(shù)字。
返回值:

BigNumber - 表示給定值的 BigNumber 實(shí)例茴晋。

示例:
var value = web3.toBigNumber('200000000000000000000001');
console.log(value); // instanceOf BigNumber
console.log(value.toNumber()); // 2.0000000000000002e+23
console.log(value.toString(10)); // '200000000000000000000001'

2.16 isAddress(hexString)

接口:
web3.isAddress

web3.isAddress(HexString);

檢查給定的字符串是否是地址陪捷。

參數(shù):
  1. String - HEX字符串。
返回值:

Boolean - 如果它不是有效的地址格式诺擅,則為 false市袖。如果它是全小寫或全部大寫有效地址,則返回 true烁涌。如果它是一個(gè)混合大小寫的地址苍碟,則使用 web3.isChecksumAddress() 進(jìn)行檢查。

示例:

var isAddress = web3.isAddress("0x8888f1f195afa192cfee860698584c030f4c9db1");
console.log(isAddress); // true

2.17 net

2.17.1 listening/getListening

接口:

web3.net.listening

web3.net.listening
// or async
web3.net.getListening(callback(error, result){ ... })

此屬性是只讀的撮执,表示節(jié)點(diǎn)是否正在主動(dòng)偵聽(tīng)網(wǎng)絡(luò)連接微峰。

返回值:

Boolean - 如果客戶端正在主動(dòng)偵聽(tīng)網(wǎng)絡(luò)連接,則為 true抒钱,否則為 false蜓肆。

示例:
var listening = web3.net.listening;
console.log(listening); // true of false

2.17.2 peerCount/getPerrCount

接口:
web3.net.peerCount

web3.net.peerCount
// or async
web3.net.getPeerCount(callback(error, result){ ... })

此屬性是只讀的,并返回已連接的對(duì)等方的數(shù)量谋币。

返回值:

Number - 當(dāng)前連接到客戶端的對(duì)等方數(shù)量仗扬。

示例:
var peerCount = web3.net.peerCount;
console.log(peerCount); // 4

2.18 eth

包含以太坊區(qū)塊鏈相關(guān)方法。

示例:
var eth = web3.eth;

2.18.1 defaultAccount

接口:

web3.eth.defaultAccount

web3.eth.defaultAccount

此默認(rèn)地址用于以下方法(可選擇通過(guò)指定 from 屬性覆蓋它):

  • web3.eth.sendTransaction()
  • web3.eth.call()
值:

String, 20 字節(jié) - 我們擁有的任何地址蕾额,或我們擁有私鑰的地址早芭。默認(rèn)值 undefined。

返回值:

String, 20 字節(jié) - 當(dāng)前設(shè)置的默認(rèn)地址诅蝶。

示例:
var defaultAccount = web3.eth.defaultAccount;
console.log(defaultAccount); // ''
// set the default account
web3.eth.defaultAccount = '0x8888f1f195afa192cfee860698584c030f4c9db1';

2.18.2 defaultBlock

接口:

web3.eth.defaultBlock

web3.eth.defaultBlock

此默認(rèn)塊用于以下方法(可選擇通過(guò)傳遞 defaultBlock 參數(shù)來(lái)覆蓋它):

  • web3.eth.getBalance()
  • web3.eth.getCode()
  • web3.eth.getTransactionCount()
  • web3.eth.getStorageAt()
  • web3.eth.call()
  • contract.myMethod.call()
  • contract.myMethod.estimateGas()
值:

默認(rèn)塊參數(shù)可以是以下之一:

  • Number - 一個(gè)區(qū)塊號(hào)
  • String - "earliest", 創(chuàng)世區(qū)塊
  • String - "latest", 最新的塊(區(qū)塊鏈的當(dāng)前區(qū)塊)
  • String - "pending", 當(dāng)前挖掘的塊(包括待處理的交易)默認(rèn)是最新的
返回值:

Number|String, 查詢狀態(tài)時(shí)使用的默認(rèn)區(qū)塊編號(hào)退个。

示例:
var defaultBlock = web3.eth.defaultBlock;
console.log(defaultBlock); // 'latest'
// set the default block
web3.eth.defaultBlock = 231;

2.18.3 syncing/getSyncing

接口:
web3.eth.syncing

web3.eth.syncing
// or async
web3.eth.getSyncing(callback(error, result){ ... })

此屬性是只讀的募壕,并在節(jié)點(diǎn)同步或返回 false 時(shí)返回同步對(duì)象。

返回值:
Object|Boolean - 當(dāng)節(jié)點(diǎn)當(dāng)前正在同步或假時(shí)语盈,同步對(duì)象如下:

  • startingBlock: Number - 同步開(kāi)始的區(qū)塊編號(hào)舱馅。
  • currentBlock: Number - 區(qū)塊編號(hào),節(jié)點(diǎn)當(dāng)前已同步到哪個(gè)區(qū)塊黎烈。
  • highestBlock: Number - 要同步的預(yù)期區(qū)塊編號(hào)习柠。

示例:

var sync = web3.eth.syncing;
console.log(sync);
/*
{
  startingBlock: 300,
  currentBlock: 312,
  highestBlock: 512
}
*/

2.18.4 isSyncing

接口:

web3.eth.isSyncing

web3.eth.isSyncing(callback);

每次同步開(kāi)始,更新和停止時(shí)照棋,此便捷功能都會(huì)調(diào)用回調(diào)资溃。

返回值:

Object - 一個(gè) isSyncing 對(duì)象,具有以下方法:

  • syncing.addCallback(): 添加另一個(gè)回調(diào)烈炭,當(dāng)節(jié)點(diǎn)啟動(dòng)或停止同步時(shí)將調(diào)用該回調(diào)溶锭。
  • syncing.stopWatching(): 停止同步回調(diào)。

回調(diào)返回值

  • Boolean - 當(dāng)同步開(kāi)始時(shí)符隙,回調(diào)將被觸發(fā)為 true趴捅,而當(dāng)它停止時(shí),回調(diào)將被觸發(fā)霹疫。
  • Object - 同步時(shí)它將返回同步對(duì)象:
    • startingBlock: Number - 同步開(kāi)始的區(qū)塊編號(hào)拱绑。
    • currentBlock: Number - 區(qū)塊編號(hào),節(jié)點(diǎn)當(dāng)前已同步到哪個(gè)區(qū)塊丽蝎。
    • highestBlock: Number - 要同步的預(yù)期區(qū)塊編號(hào)猎拨。
示例:
web3.eth.isSyncing(function(error, sync){
   if(!error) {
       // stop all app activity
       if(sync === true) {
          // we use `true`, so it stops all filters, but not the web3.eth.syncing polling
          web3.reset(true);
       
       // show sync info
       } else if(sync) {
          console.log(sync.currentBlock);
       
       // re-gain app operation
       } else {
           // run your app init function...
       }
   }
});

2.18.5 coinbase/getCoinbase

接口:

web3.eth.coinbase

web3.eth.coinbase
// or async
web3.eth.getCoinbase(callback(error, result){ ... })

此屬性是只讀的,并返回采礦獎(jiǎng)勵(lì)所在的 coinbase 地址屠阻。

返回值:

String - 客戶的 coinbase 地址红省。

示例:
var coinbase = web3.eth.coinbase;
console.log(coinbase); // "0x407d73d8a49eeb85d32cf465507dd71d507100c1"

2.18.6 hashrate/getHashrate

接口:

web3.eth.hashrate

web3.eth.hashrate
// or async
web3.eth.getHashrate(callback(error, result){ ... })

此屬性是只讀的,并返回節(jié)點(diǎn)挖掘的每秒哈希數(shù)国觉。

返回值:

Number - 每秒哈希數(shù)吧恃。

示例:
var hashrate = web3.eth.hashrate;
console.log(hashrate); // 493736

2.18.7 gasPrice/getGasPrice

接口:

web3.eth.gasPrice

web3.eth.gasPrice
// or async
web3.eth.getGasPrice(callback(error, result){ ... })

此屬性為只讀并返回當(dāng)前的 gas 價(jià)格。gas 價(jià)格由 x 個(gè)最新區(qū)塊中位數(shù) gas 價(jià)格決定麻诀。

返回值:

Number - 以 Wei 為單位的當(dāng)前 gas 價(jià)格的 BigNumber 實(shí)例痕寓。請(qǐng)參閱 BigNumber 上的注釋。

示例:
var gasPrice = web3.eth.gasPrice;
console.log(gasPrice.toString(10)); // "10000000000000"

2.18.8 accounts/getAccounts

接口:

web3.eth.accounts

web3.eth.accounts
// or async
web3.eth.getAccounts(callback(error, result){ ... })

此屬性是只讀的蝇闭,并返回節(jié)點(diǎn)控制的帳戶列表呻率。

返回值:

Array - 由客戶端控制的地址數(shù)組。

示例:
var accounts = web3.eth.accounts;
console.log(accounts); // ["0x407d73d8a49eeb85d32cf465507dd71d507100c1"] 

2.18.9 mining/getMining

接口:

web3.eth.mining

web3.eth.mining
// or async
web3.eth.getMining(callback(error, result){ ... })

此屬性是只讀的丁眼,并說(shuō)明節(jié)點(diǎn)是否正在挖礦中筷凤。

返回值:

Boolean - 如果客戶端正在挖礦昭殉,則為 true苞七,否則為 false藐守。

示例:
var mining = web3.eth.mining;
console.log(mining); // true or false

2.18.10 blockNumber/getBlockNumber

接口:

web3.eth.blockNumber

web3.eth.blockNumber
// or async
web3.eth.getBlockNumber(callback(error, result){ ... })

此屬性是只讀的,并返回當(dāng)前區(qū)塊編號(hào)蹂风。

返回值:

Number - 最近區(qū)塊的編號(hào)卢厂。

示例:
var number = web3.eth.blockNumber;
console.log(number); // 2744

2.18.11 register(hexString) (Not implemented yet)

接口:

web3.eth.register

web3.eth.register(addressHexString [, callback])

(尚未實(shí)現(xiàn))注冊(cè)要包含在 web3.eth.accounts 中的給定地址。這允許非私有密鑰擁有的帳戶被關(guān)聯(lián)為擁有帳戶(例如惠啄,合約錢包)慎恒。

參數(shù):
  1. String - 要注冊(cè)的地址
  2. Function - (可選)如果傳遞回調(diào),則 HTTP 請(qǐng)求將成為異步撵渡。請(qǐng)參閱此處說(shuō)明以獲取詳細(xì)信息。
返回值:

?

示例:
web3.eth.register("0x407d73d8a49eeb85d32cf465507dd71d507100ca")

2.18.12 unRegister(hexString) (Not implemented yet)

接口:
web3.eth.unRegister

web3.eth.unRegister(addressHexString [, callback])

(尚未實(shí)施)取消注冊(cè)給定地址。

參數(shù):
  1. String - 要取消注冊(cè)的地址
  2. Function - (可選)如果傳遞回調(diào)窒悔,則 HTTP 請(qǐng)求將成為異步喳篇。請(qǐng)參閱此處說(shuō)明以獲取詳細(xì)信息。
返回值:

?

示例:
web3.eth.unregister("0x407d73d8a49eeb85d32cf465507dd71d507100ca")

2.18.13 getBalance(address)

接口:

web3.eth.getBalance

web3.eth.getBalance(addressHexString [, defaultBlock] [, callback])

獲取給定區(qū)塊的地址余額节腐。

參數(shù):
  1. String - 獲得余額的地址外盯。
  2. Number|String - (可選)如果傳遞此參數(shù),則不會(huì)使用 web3.eth.defaultBlock 設(shè)置的默認(rèn)區(qū)塊翼雀。
  3. Function - 方法 - (可選)如果傳遞回調(diào)饱苟,則 HTTP 請(qǐng)求將成為異步。請(qǐng)參閱此處說(shuō)明以獲取詳細(xì)信
返回值:

String - wei 中給定地址的當(dāng)前余額的 BigNumber 實(shí)例狼渊。請(qǐng)參閱 BigNumber 上的注釋箱熬。

示例:
var balance = web3.eth.getBalance("0x407d73d8a49eeb85d32cf465507dd71d507100c1");
console.log(balance); // instanceof BigNumber
console.log(balance.toString(10)); // '1000000000000'
console.log(balance.toNumber()); // 1000000000000

2.18.14 getStorageAt(address, position)

接口:

web3.eth.getStorageAt

web3.eth.getStorageAt(addressHexString, position [, defaultBlock] [, callback])

將存儲(chǔ)空間放在地址的特定位置。

參數(shù):
  1. String - 從中獲取存儲(chǔ)的地址囤锉。
  2. Number - 存儲(chǔ)的索引位置坦弟。
  3. Number|String - (可選)如果傳遞此參數(shù),則不會(huì)使用 web3.eth.defaultBlock 設(shè)置的默認(rèn)區(qū)塊官地。
  4. Function - 方法 - (可選)如果傳遞回調(diào)酿傍,則 HTTP 請(qǐng)求將成為異步。請(qǐng)參閱此處說(shuō)明以獲取詳細(xì)信
返回值:

String - 給定位置的存儲(chǔ)值驱入。

示例:
var state = web3.eth.getStorageAt("0x407d73d8a49eeb85d32cf465507dd71d507100c1", 0);
console.log(state); // "0x03"

2.18.15 getCode(address)

接口:

web3.eth.getCode

web3.eth.getCode(addressHexString [, defaultBlock] [, callback])

獲取特定地址的代碼赤炒。

參數(shù):
  1. String - 從中獲取代碼的地址。
  2. Number|String - (可選)如果傳遞此參數(shù)亏较,則不會(huì)使用 web3.eth.defaultBlock 設(shè)置的默認(rèn)區(qū)塊莺褒。
  3. Function - 方法 - (可選)如果傳遞回調(diào),則 HTTP 請(qǐng)求將成為異步雪情。請(qǐng)參閱此處說(shuō)明以獲取詳細(xì)信
返回值:

String - 給定地址 addressHexString 的數(shù)據(jù)遵岩。

示例:
var code = web3.eth.getCode("0xd5677cf67b5aa051bb40496e68ad359eb97cfbf8");
console.log(code); // "0x600160008035811a818181146012578301005b601b6001356025565b8060005260206000f25b600060078202905091905056"

2.18.16 getBlock(hash/number)

接口:

web3.eth.getBlock

web3.eth.getBlock(blockHashOrBlockNumber [, returnTransactionObjects] [, callback])

返回與區(qū)塊編號(hào)或塊哈希匹配的區(qū)塊。

參數(shù):
  1. String|Number - 區(qū)塊號(hào)或散列〕局矗或者是默認(rèn)區(qū)塊參數(shù)中的字符串 “earliest”舍哄,“l(fā)atest” 或 “pending”。
  2. Boolean - (可選誊锭,默認(rèn)為 false)如果為 true表悬,則返回的區(qū)塊將包含所有事務(wù)作為對(duì)象,如果為 false丧靡,則僅包含交易哈希蟆沫。
  3. Function - (可選)如果傳遞回調(diào),則 HTTP 請(qǐng)求將成為異步温治。請(qǐng)參閱此處說(shuō)明以獲取詳細(xì)信
返回值:

Object - 區(qū)塊對(duì)象:

  • number: Number - 區(qū)塊號(hào)饭庞。其掛起塊時(shí)為 null
  • hash: String, 32 Bytes - 區(qū)塊的哈希值熬荆。其掛起塊時(shí)為 null但绕。
  • parentHash: String, 32 Bytes - 父區(qū)塊的哈希值。
  • nonce: String, 8 Bytes - 生成的工作證明的哈希值惶看。其掛起塊時(shí)為 null捏顺。
  • sha3Uncles: String, 32 Bytes - 區(qū)塊中的 uncle 數(shù)據(jù)的 SHA3。
  • logsBloom: String, 256 Bytes - 區(qū)塊的日志的 bloom 過(guò)濾器纬黎。其掛起塊時(shí)為 null幅骄。
  • transactionsRoot: String, 32 Bytes - 區(qū)塊的交易 trie 的根.
  • stateRoot: String, 32 Bytes - 區(qū)塊的最終狀態(tài) trie 的根。
  • miner: String, 20 Bytes - 獲得采礦獎(jiǎng)勵(lì)的受益人的地址本今。
  • difficulty: BigNumber - 這個(gè)區(qū)塊的難度的整數(shù)拆座。
  • totalDifficulty: BigNumber - 鏈的總難度的整數(shù),直到這個(gè)區(qū)塊冠息。
  • extraData: String - 該塊的“額外數(shù)據(jù)”字段挪凑。
  • size: Number - 整數(shù)這個(gè)區(qū)塊的大小(以字節(jié)為單位)逛艰。
  • gasLimit: Number - 該區(qū)塊允許的最大 gas 量躏碳。
  • gasUsed: Number - 此區(qū)塊中所有交易的總使用 gas。
  • timestamp: Number - 整理塊時(shí)的 unix 時(shí)間戳散怖。
  • transactions: Array - 交易對(duì)象的數(shù)組菇绵,或 32 字節(jié)交易哈希,具體取決于最后給定的參數(shù)镇眷。
  • uncles: Array - 一堆叔叔哈希咬最。
示例:
var info = web3.eth.getBlock(3150);
console.log(info);
/*
{
 "number": 3,
 "hash": "0xef95f2f1ed3ca60b048b4bf67cde2195961e0bba6f70bcbea9a2c4e133e34b46",
 "parentHash": "0x2302e1c0b972d00932deb5dab9eb2982f570597d9d42504c05d9c2147eaf9c88",
 "nonce": "0xfb6e1a62d119228b",
 "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
 "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
 "transactionsRoot": "0x3a1b03875115b79539e5bd33fb00d8f7b7cd61929d5a3c574f507b8acf415bee",
 "stateRoot": "0xf1133199d44695dfa8fd1bcfe424d82854b5cebef75bddd7e40ea94cda515bcb",
 "miner": "0x8888f1f195afa192cfee860698584c030f4c9db1",
 "difficulty": BigNumber,
 "totalDifficulty": BigNumber,
 "size": 616,
 "extraData": "0x",
 "gasLimit": 3141592,
 "gasUsed": 21662,
 "timestamp": 1429287689,
 "transactions": [
   "0x9fc76417374aa880d4449a1f7f31ec597f00b1f6f3dd2d66f4c9c6c445836d8b"
 ],
 "uncles": []
}
*/

2.18.17 getBlockTransactionCount(hash/number)

接口:

web3.eth.getBlockTransactionCount

web3.eth.getBlockTransactionCount(hashStringOrBlockNumber [, callback])

返回給定區(qū)塊中的交易數(shù)。

參數(shù):
  1. String|Number - 區(qū)塊號(hào)或散列欠动∮牢冢或者是默認(rèn)區(qū)塊參數(shù)中的字符串 “earliest”,“l(fā)atest” 或 “pending”。
  2. Function - (可選)如果傳遞回調(diào)翅雏,則 HTTP 請(qǐng)求將成為異步硝桩。請(qǐng)參閱此處說(shuō)明以獲取詳細(xì)信
返回值:

Number - 給定區(qū)塊中的交易數(shù)。

示例:
var number = web3.eth.getBlockTransactionCount("0x407d73d8a49eeb85d32cf465507dd71d507100c1");
console.log(number); // 1

2.18.18 getUncle(hash/number)

接口:

web3.eth.getUncle

web3.eth.getUncle(blockHashStringOrNumber, uncleNumber [, returnTransactionObjects] [, callback])

按給定的叔叔索引位置返回一個(gè)區(qū)塊叔叔枚荣。

參數(shù):
  1. String|Number - 區(qū)塊號(hào)或散列√浼纾或者是默認(rèn)區(qū)塊參數(shù)中的字符串 “earliest”橄妆,“l(fā)atest” 或 “pending”。
  2. Number - 叔區(qū)塊的索引位置祈坠。
  3. Boolean - (可選害碾,默認(rèn)為 false)如果為 true,則返回的區(qū)塊將包含所有事務(wù)作為對(duì)象赦拘,如果為 false慌随,則僅包含交易哈希。
  4. Function - (可選)如果傳遞回調(diào)躺同,則 HTTP 請(qǐng)求將成為異步阁猜。請(qǐng)參閱此處說(shuō)明以獲取詳細(xì)信
返回值:

Object - 返回的的叔區(qū)塊。有關(guān)返回值蹋艺,請(qǐng)參閱 web3.eth.getBlock()剃袍。注意:叔區(qū)塊不包含單個(gè)交易。

示例:
var uncle = web3.eth.getUncle(500, 0);
console.log(uncle); // see web3.eth.getBlock

2.18.19 getBlockUncleCount(hash/number)

2.18.20 getTransaction(hash)

接口:

web3.eth.getTransaction

web3.eth.getTransaction(transactionHash [, callback])

返回與給定交易哈希匹配的事務(wù)捎谨。

參數(shù):
  1. String - 交易哈希民效。
  2. Function - (可選)如果傳遞回調(diào),則 HTTP 請(qǐng)求將成為異步涛救。請(qǐng)參閱此處說(shuō)明以獲取詳細(xì)信息畏邢。
返回值:

Object - 一個(gè)交易對(duì)象,它的哈希是 transactionHash:

  • hash: String, 32 Bytes - 交易的哈希值检吆。
  • nonce: Number - 發(fā)送者在此之前進(jìn)行的交易次數(shù)舒萎。
  • blockHash: String, 32 Bytes - 此交易所在的區(qū)塊的哈希值。當(dāng)其掛起時(shí)為 null蹭沛。
  • blockNumber: Number - 此事務(wù)所在的區(qū)塊編號(hào)逆甜。當(dāng)其掛起時(shí)為 null
  • transactionIndex: Number - 區(qū)塊中交易索引位置的整數(shù)致板。當(dāng)它掛起時(shí)為 null交煞。
  • from: String, 20 Bytes - 發(fā)送者的地址。
  • to: String, 20 Bytes - 接收者的地址斟或。合同創(chuàng)建交易時(shí)為 null素征。
  • value: BigNumber - 以 Wei 為單位,表示轉(zhuǎn)發(fā)多少個(gè) Wei。
  • gasPrice: BigNumber - 發(fā)送者提供的 gas 價(jià)格御毅。
  • gas: Number - 發(fā)送者提供的 gas根欧。
  • input: String - 與交易一起發(fā)送的數(shù)據(jù)。
示例:
var transaction = web3.eth.getTransaction('0x9fc76417374aa880d4449a1f7f31ec597f00b1f6f3dd2d66f4c9c6c445836d8b');
console.log(transaction);
/*
{
 "hash": "0x9fc76417374aa880d4449a1f7f31ec597f00b1f6f3dd2d66f4c9c6c445836d8b",
 "nonce": 2,
 "blockHash": "0xef95f2f1ed3ca60b048b4bf67cde2195961e0bba6f70bcbea9a2c4e133e34b46",
 "blockNumber": 3,
 "transactionIndex": 0,
 "from": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b",
 "to": "0x6295ee1b4f6dd65047762f924ecd367c17eabf8f",
 "value": BigNumber,
 "gas": 314159,
 "gasPrice": BigNumber,
 "input": "0x57cb2fc4"
}
*/

2.18.21 getTransactionFromBlock(hashOrNumber, indexNumber)

接口:

web3.eth.getTransactionFromBlock

getTransactionFromBlock(hashStringOrNumber, indexNumber [, callback])

返回基于區(qū)塊哈隙饲或數(shù)字以及交易索引位置的交易凤粗。

參數(shù):
  1. String|Number - 區(qū)塊號(hào)或散列〗穸梗或者是默認(rèn)區(qū)塊參數(shù)中的字符串 “earliest”嫌拣,“l(fā)atest” 或 “pending”。
  2. Number - 交易索引呆躲。
  3. Function - (可選)如果傳遞回調(diào)异逐,則 HTTP 請(qǐng)求將成為異步。請(qǐng)參閱此處說(shuō)明以獲取詳細(xì)信息插掂。
返回值:

Object - 交易對(duì)象灰瞻,參考 web3.eth.getTransaction。

示例:
var transaction = web3.eth.getTransactionFromBlock('0x4534534534', 2);
console.log(transaction); // see web3.eth.getTransaction

2.18.22 getTransactionReceipt(hash)

接口:

web3.eth.getTransactionReceipt

web3.eth.getTransactionReceipt(hashString [, callback])

按交易哈希返回的交易回執(zhí)辅甥。請(qǐng)注意酝润,交易回執(zhí)不適用于待處理的交易。

參數(shù):
  1. String - 交易哈希璃弄。
  2. Function - (可選)如果傳遞回調(diào)袍祖,則 HTTP 請(qǐng)求將成為異步。請(qǐng)參閱此處說(shuō)明以獲取詳細(xì)信息谢揪。
返回值:

Object - 交易回執(zhí)對(duì)象蕉陋,當(dāng)交易回執(zhí)不存在時(shí)返回 null

  • blockHash: String, 32 Bytes - 此交易所在的塊的哈希值拨扶。
  • blockNumber: Number - 此交易所在的區(qū)號(hào)凳鬓。
  • transactionHash: String, 32 Bytes - 交易的哈希值。
  • transactionIndex: Number - 區(qū)塊中交易索引位置的整數(shù)患民。
  • from: String, 20 Bytes - 發(fā)送者的地址缩举。
  • to: String, 20 Bytes - 接收者的地址。合同創(chuàng)建交易時(shí)為 null匹颤。
  • cumulativeGasUsed : Number - 在區(qū)塊中執(zhí)行此交易時(shí)使用的總 gas仅孩。
  • gasUsed : Number - 僅此特定交易所使用的 gas。
  • contractAddress : String - 20 Bytes - 如果交易是創(chuàng)建合約印蓖,則創(chuàng)建合約地址辽慕,否則為 null
  • logs : Array - 此交易生成的日志對(duì)象數(shù)組赦肃。
  • status : String - '0x0' 表示交易失敗溅蛉,'0x1' 表示交易成功公浪。
示例:
var receipt = web3.eth.getTransactionReceipt('0x9fc76417374aa880d4449a1f7f31ec597f00b1f6f3dd2d66f4c9c6c445836d8b');
console.log(receipt);
{
  "transactionHash": "0x9fc76417374aa880d4449a1f7f31ec597f00b1f6f3dd2d66f4c9c6c445836d8b",
  "transactionIndex": 0,
  "blockHash": "0xef95f2f1ed3ca60b048b4bf67cde2195961e0bba6f70bcbea9a2c4e133e34b46",
  "blockNumber": 3,
  "contractAddress": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b",
  "cumulativeGasUsed": 314159,
  "gasUsed": 30234,
  "logs": [{
         // logs as returned by getFilterLogs, etc.
     }, ...],
  "status": "0x1"
}

2.18.23 getTransactionCount(address)

接口:

web3.eth.getTransactionCount

web3.eth.getTransactionCount(addressHexString [, defaultBlock] [, callback])

獲取從此地址發(fā)送的交易數(shù)量。

參數(shù):
  1. String - 從中獲取交易數(shù)量的地址船侧。
  2. String|Number - 區(qū)塊號(hào)或散列欠气。或者是默認(rèn)區(qū)塊參數(shù)中的字符串 “earliest”镜撩,“l(fā)atest” 或 “pending”预柒。
  3. Function - (可選)如果傳遞回調(diào),則 HTTP 請(qǐng)求將成為異步袁梗。請(qǐng)參閱此處說(shuō)明以獲取詳細(xì)信息宜鸯。
返回值:

Number - 從給定地址發(fā)送的交易數(shù)。

示例:
var number = web3.eth.getTransactionCount("0x407d73d8a49eeb85d32cf465507dd71d507100c1");
console.log(number); // 1

2.18.24 sendTransaction(object)

接口:

web3.eth.sendTransaction

web3.eth.sendTransaction(transactionObject [, callback])

向網(wǎng)絡(luò)中發(fā)送一筆交易围段。

參數(shù):
  1. Object - 待發(fā)送的交易對(duì)象。
  • from: String - 發(fā)送帳戶的地址投放。如果未指定奈泪,則使用 web3.eth.defaultAccount 屬性。
  • to: String - (可選)消息的目標(biāo)地址灸芳,未定義合同創(chuàng)建交易涝桅。
  • value: Number|String|BigNumber - (可選)以 Wei 為單位進(jìn)行幣轉(zhuǎn)移的交易,如果是合約創(chuàng)建交易烙样,也是捐贈(zèng)冯遂。
  • gas: Number|String|BigNumber - (可選,默認(rèn):待定)用于交易的 gas(未使用的 gas 退還)谒获。
  • gasPrice: Number|String|BigNumber - (可選蛤肌,默認(rèn):待定)此交易的 gas 價(jià)格在 wei 中,默認(rèn)為平均網(wǎng)絡(luò) gas 價(jià)格批狱。
  • data: String - (可選)包含消息的關(guān)聯(lián)數(shù)據(jù)的字節(jié)字符串裸准,或者在合同創(chuàng)建交易的情況下,是初始化代碼赔硫。
  • nonce: Number - (可選)隨機(jī)數(shù)的整數(shù)炒俱。這允許覆蓋使用相同 nonce 的自己的掛起交易。
  1. Function - (可選)如果傳遞回調(diào)爪膊,則 HTTP 請(qǐng)求將成為異步权悟。請(qǐng)參閱此處說(shuō)明以獲取詳細(xì)信息。
返回值:

String - 32 字節(jié)交易哈希為 HEX 字符串推盛。如果交易是合同創(chuàng)建峦阁,則使用 web3.eth.getTransactionReceipt() 獲取合同地址,在交易被挖掘之后耘成。

示例:
// compiled solidity source code using https://chriseth.github.io/cpp-ethereum/
var code = "603d80600c6000396000f3007c01000000000000000000000000000000000000000000000000000000006000350463c6888fa18114602d57005b6007600435028060005260206000f3";
web3.eth.sendTransaction({data: code}, function(err, transactionHash) {
 if (!err)
   console.log(transactionHash); // "0x7f9fade1c0d57a7af66ab4ead7c2eb7b11a91385"
});

2.18.25 sendRawTransaction(object)

接口:

web3.eth.sendRawTransaction

web3.eth.sendRawTransaction(signedTransactionData [, callback])

發(fā)送已簽名的交易拇派。例如荷辕,可以使用以下命令進(jìn)行簽名:https://github.com/SilentCicero/ethereumjs-accounts

參數(shù):
  1. String - 以 HEX 格式簽署的交易數(shù)據(jù)。
  2. Function - (可選)如果傳遞回調(diào)件豌,則 HTTP 請(qǐng)求將成為異步疮方。請(qǐng)參閱此處說(shuō)明以獲取詳細(xì)信息。
返回值:

String - 32 字節(jié)交易哈希為 HEX 字符串茧彤。如果交易是合約創(chuàng)建骡显,則使用 web3.eth.getTransactionReceipt() 獲取合約地址,在交易被挖掘之后曾掂。

示例:
var Tx = require('ethereumjs-tx');
var privateKey = new Buffer('e331b6d69882b4cb4ea581d88e0b604039a3de5967688d3dcffdd2270c0fd109', 'hex')
var rawTx = {
 nonce: '0x00',
 gasPrice: '0x09184e72a000', 
 gasLimit: '0x2710',
 to: '0x0000000000000000000000000000000000000000', 
 value: '0x00', 
 data: '0x7f7465737432000000000000000000000000000000000000000000000000000000600057'
}
var tx = new Tx(rawTx);
tx.sign(privateKey);
var serializedTx = tx.serialize();
//console.log(serializedTx.toString('hex'));
//f889808609184e72a00082271094000000000000000000000000000000000000000080a47f74657374320000000000000000000000000000000000000000000000000000006000571ca08a8bbf888cfa37bbf0bb965423625641fc956967b81d12e23709cead01446075a01ce999b56a8a88504be365442ea61239198e23d1fce7d00fcfc5cd3b44b7215f
web3.eth.sendRawTransaction('0x' + serializedTx.toString('hex'), function(err, hash) {
 if (!err)
   console.log(hash); // "0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385"
});

2.18.26 sign(object)

接口:

web3.eth.sign

web3.eth.sign(address, dataToSign, [, callback])

從特定帳戶簽署數(shù)據(jù)惫谤。此帳戶需要解鎖。

參數(shù):
  1. String - 要簽名的地址珠洗。
  2. String - 要簽名的數(shù)據(jù)溜歪。
  3. Function - (可選)如果傳遞回調(diào),則 HTTP 請(qǐng)求將成為異步许蓖。請(qǐng)參閱此處說(shuō)明以獲取詳細(xì)信息蝴猪。
返回值:

String - 簽名數(shù)據(jù)。在十六進(jìn)制前綴之后膊爪,字符對(duì)應(yīng)于 ECDSA 值自阱,如下所示:

r = signature[0:64]
s = signature[64:128]
v = signature[128:130]

請(qǐng)注意,如果使用的是 ecrecover米酬,則 v 將為 “00” 或 “01”沛豌。因此,為了使用此值赃额,必須將其解析為整數(shù)然后再添加 27.這將導(dǎo)致 27 或 28加派。

示例:
var result = web3.eth.sign("0x135a7de83802408321b74c322f8558db1679ac20",
   "0x9dd2c369a187b4e6b9c402f030e50743e619301ea62aa4c0737d4ef7e10a3d49"); // second argument is web3.sha3("xyz")
console.log(result); // "0x30755ed65396facf86c53e6217c52b4daebe72aa4941d89635409de4c9c7f9466d4e9aaec7977f05e923889b33c0d0dd27d7226b6e6f56ce737465c5cfd04be400"

2.18.27 call(object)

接口:

web3.eth.call

web3.eth.call(callObject [, defaultBlock] [, callback])

執(zhí)行消息調(diào)用交易,該交易直接在節(jié)點(diǎn)的 VM 中執(zhí)行跳芳,但從未開(kāi)采到區(qū)塊鏈中哼丈。

參數(shù):
  1. Object - 交易對(duì)象參見(jiàn) web3.eth.sendTransaction,區(qū)別在于對(duì)于調(diào)用筛严,from 屬性也是可選的醉旦。
  2. Number|String - (可選)如果傳遞此參數(shù),則不會(huì)使用 web3.eth.defaultBlock 設(shè)置的默認(rèn)區(qū)塊桨啃。
  3. Function - 方法 - (可選)如果傳遞回調(diào)车胡,則 HTTP 請(qǐng)求將成為異步。請(qǐng)參閱此處說(shuō)明以獲取詳細(xì)信
返回值:

String - 返回調(diào)用的結(jié)果照瘾,例如代碼函數(shù)返回值匈棘。

示例:
var result = web3.eth.call({
   to: "0xc4abd0339eb8d57087278718986382264244252f", 
   data: "0xc6888fa10000000000000000000000000000000000000000000000000000000000000003"
});
console.log(result); // "0x0000000000000000000000000000000000000000000000000000000000000015"

2.18.28 estimateGas(object)

接口:

web3.eth.estimateGas

web3.eth.estimateGas(callObject [, callback])

執(zhí)行消息調(diào)用或交易,它直接在節(jié)點(diǎn)的 VM 中執(zhí)行析命,但從未開(kāi)采到區(qū)塊鏈中并返回使用的 gas 量主卫。

參數(shù):

請(qǐng)參閱 web3.eth.sendTransaction逃默,但所有屬性都是可選的。

返回值:

Number - 用于模擬調(diào)用/交易的用過(guò)的 gas簇搅。

示例:
var result = web3.eth.estimateGas({
   to: "0xc4abd0339eb8d57087278718986382264244252f", 
   data: "0xc6888fa10000000000000000000000000000000000000000000000000000000000000003"
});
console.log(result); // "0x0000000000000000000000000000000000000000000000000000000000000015"

2.18.29 filter(array (, options)

  • watch(callback)
  • stopWatching(callback)
  • get()
// can be 'latest' or 'pending'
var filter = web3.eth.filter(filterString);
// OR object are log filter options
var filter = web3.eth.filter(options);
// watch for changes
filter.watch(function(error, result){
 if (!error)
   console.log(result);
});
// Additionally you can start watching right away, by passing a callback:
web3.eth.filter(options, function(error, result){
 if (!error)
   console.log(result);
});
參數(shù):
  1. String|Object - 字符串 “l(fā)atest” 或 “pending” 分別用于監(jiān)視最新區(qū)塊或待處理交易中的更改完域。或者過(guò)濾器選項(xiàng)對(duì)象如下:
  • fromBlock: Number|String - 最早的區(qū)塊的數(shù)量(latest 可能是指最近和 pending 當(dāng)前挖掘區(qū)塊)瘩将。默認(rèn)情況下 latest吟税。
  • toBlock: Number|String - 最新區(qū)塊的編號(hào)(latest 可能表示最近和 pending 當(dāng)前挖掘塊)。默認(rèn)情況下 latest姿现。
  • address: String - 僅從特定帳戶獲取日志的地址或地址列表肠仪。
  • topics: Array of Strings - 必須各自出現(xiàn)在日志條目中的值數(shù)組。順序很重要备典,如果想要將主題留出使用 null异旧,例如[null,'0x00 ...']提佣。還可以為每個(gè)主題傳遞另一個(gè)數(shù)組吮蛹,其中包含該主題的選項(xiàng),例如[null镐依,['option1'匹涮,'option2']]
返回值:

Object - 具有以下方法的過(guò)濾器對(duì)象:

  • filter.get(callback): 返回適合過(guò)濾器的所有日志條目天试。
  • filter.watch(callback): 監(jiān)視適合過(guò)濾器的狀態(tài)更改并調(diào)用回調(diào)槐壳。請(qǐng)參閱此處說(shuō)明以獲取詳細(xì)信息。
  • filter.stopWatching(): 停止監(jiān)視并卸載節(jié)點(diǎn)中的過(guò)濾器喜每。一旦完成务唐,應(yīng)始終調(diào)用。
觀察回調(diào)返回值:
  • String - 使用 “l(fā)atest” 參數(shù)時(shí)带兜,它返回最后一個(gè)傳入?yún)^(qū)塊的區(qū)塊哈希枫笛。
  • String - 使用 “pending” 參數(shù)時(shí),它返回最近掛起交易的交易哈希刚照。
  • Object - 使用手動(dòng)過(guò)濾器選項(xiàng)時(shí)刑巧,它返回一個(gè)日志對(duì)象,如下所示:
    • logIndex: Number - 區(qū)塊中日志索引位置的整數(shù)无畔。其掛起日志時(shí)為 null啊楚。
    • transactionIndex: Number - 從中創(chuàng)建了交易索引位置日志的整數(shù)。其掛起日志時(shí)為 null浑彰。
    • transactionHash: String, 32 Bytes - 此日志創(chuàng)建的事務(wù)的哈希值恭理。其掛起日志時(shí)為 null
    • blockHash: String, 32 Bytes - 此日志所在區(qū)塊的哈希值郭变。當(dāng)其掛起時(shí)為 null颜价。其掛起日志時(shí)為 null涯保。
    • blockNumber: Number - 此日志所在的區(qū)塊編號(hào)。當(dāng)其掛起時(shí)為 null周伦。其掛起日志時(shí)為 null夕春。
    • address: String, 32 Bytes - 此日志源自的地址。
    • data: String - 包含日志的一個(gè)或多個(gè)32字節(jié)非索引參數(shù)横辆。
    • topics: Array of Strings - 索引日志參數(shù)的 0 到 4 32 字節(jié)數(shù)組撇他。 (實(shí)際上:第一個(gè)主題是事件簽名的哈希值(例如Deposit(address,bytes32狈蚤,uint256))困肩,除非使用匿名說(shuō)明符聲明了事件。)
    • type: STRING - 日志掛起時(shí) pending脆侮。如果已經(jīng)開(kāi)采了日志锌畸,則 mined。注意有關(guān)事件篩選器返回值靖避,請(qǐng)參閱合約事件潭枣。
示例:
var filter = web3.eth.filter({toBlock:'pending'});
filter.watch(function (error, log) {
 console.log(log); //  {"address":"0x0000000000000000000000000000000000000000", "data":"0x0000000000000000000000000000000000000000000000000000000000000000", ...}
});
// get all past logs again.
var myResults = filter.get(function(error, logs){ ... });
...
// stops and uninstalls the filter
filter.stopWatching();

2.18.30 Contract(abiArray)

接口:

web3.eth.contract

web3.eth.contract(abiArray)

為Solidity合約創(chuàng)建合約對(duì)象,該對(duì)象可用于在地址上啟動(dòng)合約幻捏∨枥纾可以在此處閱讀最新有關(guān)事件的更多信。

參數(shù):

Object - 合約對(duì)象篡九,可以按如下方式啟動(dòng):

var MyContract = web3.eth.contract(abiArray);
// instantiate by address
var contractInstance = MyContract.at(address);
// deploy new contract
var contractInstance = MyContract.new([constructorParam1] [, constructorParam2], {data: '0x12345...', from: myAccount, gas: 1000000});
// Get the data to deploy the contract manually
var contractData = MyContract.new.getData([constructorParam1] [, constructorParam2], {data: '0x12345...'});
// contractData = '0x12345643213456000000000023434234'

然后谐岁,可以在地址上啟動(dòng)現(xiàn)有合約,或使用已編譯的字節(jié)代碼部署合約:

// Instantiate from an existing address:
var myContractInstance = MyContract.at(myContractAddress);
// Or deploy a new contract:
// Deploy the contract asynchronous from Solidity file:
...
const fs = require("fs");
const solc = require('solc')
let source = fs.readFileSync('nameContract.sol', 'utf8');
let compiledContract = solc.compile(source, 1);
let abi = compiledContract.contracts['nameContract'].interface;
let bytecode = compiledContract.contracts['nameContract'].bytecode;
let gasEstimate = web3.eth.estimateGas({data: bytecode});
let MyContract = web3.eth.contract(JSON.parse(abi));
var myContractReturned = MyContract.new(param1, param2, {
  from:mySenderAddress,
  data:bytecode,
  gas:gasEstimate}, function(err, myContract){
   if(!err) {
      // NOTE: The callback will fire twice!
      // Once the contract has the transactionHash property set and once its deployed on an address.
       // e.g. check tx hash on the first call (transaction send)
      if(!myContract.address) {
          console.log(myContract.transactionHash) // The hash of the transaction, which deploys the contract
      
      // check address on the second call (contract deployed)
      } else {
          console.log(myContract.address) // the contract address
      }
       // Note that the returned "myContractReturned" === "myContract",
      // so the returned "myContractReturned" object will also get the address set.
   }
 });
// Deploy contract syncronous: The address will be added as soon as the contract is mined.
// Additionally you can watch the transaction by using the "transactionHash" property
var myContractInstance = MyContract.new(param1, param2, {data: bytecode, gas: 300000, from: mySenderAddress});
myContractInstance.transactionHash // The hash of the transaction, which created the contract
myContractInstance.address // undefined at start, but will be auto-filled later
示例:
// 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}]
}];
// creation of contract object
var MyContract = web3.eth.contract(abi);
// initiate contract for an address
var myContractInstance = MyContract.at('0xc4abd0339eb8d57087278718986382264244252f');
// call constant function
var result = myContractInstance.myConstantMethod('myParam');
console.log(result) // '0x25434534534'
// send a transaction to a function
myContractInstance.myStateChangingMethod('someParam1', 23, {value: 200, gas: 2000});
// short hand style
web3.eth.contract(abi).at(address).myAwesomeMethod(...);
// create filter
var filter = myContractInstance.myEvent({a: 5}, function (error, result) {
 if (!error)
   console.log(result);
   /*
   {
       address: '0x8718986382264244252fc4abd0339eb8d5708727',
       topics: "0x12345678901234567890123456789012", "0x0000000000000000000000000000000000000000000000000000000000000005",
       data: "0x0000000000000000000000000000000000000000000000000000000000000001",
       ...
   }
   */
});

2.18.31 contract.myMethod()

接口:

Contract Methods

// Automatically determines the use of call or sendTransaction based on the method type
myContractInstance.myMethod(param1 [, param2, ...] [, transactionObject] [, defaultBlock] [, callback]);
// Explicitly calling this method
myContractInstance.myMethod.call(param1 [, param2, ...] [, transactionObject] [, defaultBlock] [, callback]);
// Explicitly sending a transaction to this method
myContractInstance.myMethod.sendTransaction(param1 [, param2, ...] [, transactionObject] [, callback]);
// Get the call data, so you can call the contract through some other means
// var myCallData = myContractInstance.myMethod.request(param1 [, param2, ...]);
var myCallData = myContractInstance.myMethod.getData(param1 [, param2, ...]);
// myCallData = '0x45ff3ff6000000000004545345345345..'

合約對(duì)象公開(kāi)合約的方法榛臼,可以使用參數(shù)和交易對(duì)象調(diào)用這些方法伊佃。

參數(shù):
  1. String|Number|BigNumber - (可選)零個(gè)或多個(gè)函數(shù)參數(shù)。如果傳入一個(gè)字符串沛善,則必須將其格式化為十六進(jìn)制數(shù)字航揉,例如 “0xdeadbeef” 如果已經(jīng)創(chuàng)建了 BigNumber 對(duì)象,那么也可以通過(guò)它金刁。
  2. Object - (可選)(previous)last 參數(shù)可以是交易對(duì)象帅涂,有關(guān)詳細(xì)信息,請(qǐng)參閱 web3.eth.sendTransaction 參數(shù) 1尤蛮。注意:不會(huì)考慮 data 和 to 屬性媳友。
  3. Number|String - (可選)如果傳遞此參數(shù),則不會(huì)使用 web3.eth.defaultBlock 設(shè)置的默認(rèn)區(qū)塊抵屿。
  4. Function - 方法 - (可選)如果傳遞回調(diào)庆锦,則 HTTP 請(qǐng)求將成為異步。請(qǐng)參閱此處說(shuō)明以獲取詳細(xì)信息轧葛。
返回值:

String - 如果它調(diào)用結(jié)果數(shù)據(jù)搂抒,如果是發(fā)送交易的創(chuàng)建合約地址或交易哈希艇搀,請(qǐng)參閱 web3.eth.sendTransaction 以獲取詳細(xì)信息。

示例:
// creation of contract object
var MyContract = web3.eth.contract(abi);
// initiate contract for an address
var myContractInstance = MyContract.at('0x78e97bcc5b5dd9ed228fed7a4887c0d7287344a9');
var result = myContractInstance.myConstantMethod('myParam');
console.log(result) // '0x25434534534'
myContractInstance.myStateChangingMethod('someParam1', 23, {value: 200, gas: 2000}, function(err, result){ ... });

2.18.32 contract.myEvent()

接口:

Contract Events

var event = myContractInstance.MyEvent({valueA: 23} [, additionalFilterObject])
// watch for changes
event.watch(function(error, result){
if (!error)
console.log(result);
});
// Or pass a callback to start watching immediately
var event = myContractInstance.MyEvent([{valueA: 23}] [, additionalFilterObject] , function(error, result){
if (!error)
console.log(result);
});

可以使用過(guò)濾器等事件求晶,它們具有相同的方法焰雕,但可以傳遞不同的對(duì)象來(lái)創(chuàng)建事件過(guò)濾器。

參數(shù):
  1. Object - 要過(guò)濾日志的索引返回值芳杏,例如{'valueA':1矩屁,'valueB':[myFirstAddress,mySecondAddress]}爵赵。默認(rèn)情況下吝秕,所有過(guò)濾器值都設(shè)置為 null。這意味著空幻,它們將匹配從此合同發(fā)送的任何給定類型的事件烁峭。
  2. Object - 其他過(guò)濾選項(xiàng),請(qǐng)參閱用過(guò)濾器參數(shù) 1了解更多信息默認(rèn)情況下秕铛,filterObject 將字段 “address” 設(shè)置為合約的地址约郁。第一個(gè)主題是事件的簽名。
  3. Function - (可選)如果將回調(diào)作為最后一個(gè)參數(shù)傳遞但两,它將立即開(kāi)始監(jiān)聽(tīng)鬓梅,無(wú)需調(diào)用 myEvent.watch(function(){})。請(qǐng)參閱此處說(shuō)明以獲取詳細(xì)信息谨湘。
回調(diào)返回值:

Object - 一個(gè)事件對(duì)象如下:

  • address: String, 32 Bytes - 此日志源自的地址绽快。
  • args: Object - 來(lái)自事件的參數(shù)。
  • blockHash: String, 32 Bytes - 此日志所在區(qū)塊的哈希值悲关。當(dāng)其掛起時(shí)為 null谎僻。
  • blockNumber: Number - 此日志所在的區(qū)塊編號(hào)娄柳。當(dāng)其掛起時(shí)為 null寓辱。
  • logIndex: Number - 區(qū)塊中日志索引位置的整數(shù)。
  • event: String - 事件名稱赤拒。
  • removed: bool - 指示此事件創(chuàng)建的交易是否已從區(qū)塊鏈中刪除(由于孤立塊)或從未到達(dá)(由于拒絕交易)秫筏。
  • transactionIndex: Number - 從中創(chuàng)建了交易索引位置日志的整數(shù)。
  • transactionHash: String, 32 Bytes - 此日志創(chuàng)建的交易的哈希值挎挖。
示例:
var MyContract = web3.eth.contract(abi);
var myContractInstance = MyContract.at('0x78e97bcc5b5dd9ed228fed7a4887c0d7287344a9');
// watch for an event with {some: 'args'}
var myEvent = myContractInstance.MyEvent({some: 'args'}, {fromBlock: 0, toBlock: 'latest'});
myEvent.watch(function(error, result){
  ...
});
// would get all past logs again.
var myResults = myEvent.get(function(error, logs){ ... });
...
// would stop and uninstall the filter
myEvent.stopWatching();

2.18.33 contract.allEvents()

接口:

Contract allEvents

var events = myContractInstance.allEvents([additionalFilterObject]);
// watch for changes
events.watch(function(error, event){
 if (!error)
   console.log(event);
});
// Or pass a callback to start watching immediately
var events = myContractInstance.allEvents([additionalFilterObject], function(error, log){
 if (!error)
   console.log(log);
});

將為此合約創(chuàng)建的所有事件調(diào)用回調(diào)这敬。

參數(shù):
  1. Object - 其他過(guò)濾選項(xiàng),請(qǐng)參閱用過(guò)濾器參數(shù) 1了解更多信息默認(rèn)情況下蕉朵,filterObject 將字段 “address” 設(shè)置為合約的地址崔涂。第一個(gè)主題是事件的簽名。
  2. Function - (可選)如果將回調(diào)作為最后一個(gè)參數(shù)傳遞始衅,它將立即開(kāi)始監(jiān)聽(tīng)冷蚂,無(wú)需調(diào)用 myEvent.watch(function(){})缭保。請(qǐng)參閱此處說(shuō)明以獲取詳細(xì)信息。
回調(diào)返回值:

Object - 參考 Contract Events蝙茶。

示例:
var MyContract = web3.eth.contract(abi);
var myContractInstance = MyContract.at('0x78e97bcc5b5dd9ed228fed7a4887c0d7287344a9');
// watch for an event with {some: 'args'}
var events = myContractInstance.allEvents({fromBlock: 0, toBlock: 'latest'});
events.watch(function(error, result){
  ...
});
// would get all past logs again.
events.get(function(error, logs){ ... });
...
// would stop and uninstall the filter
events.stopWatching();

2.18.34 getCompilers()

2.18.35 compile.lll(string)

2.18.35 compile.solidity(string)

2.18.36 compile.serpent(string)

2.18.37 namereg

2.18.38 sendIBANTransaction

2.18.39 iban

2.18.39.1 fromAddress
2.18.39.2 fromBban
2.18.39.3 createIndirect
2.18.39.4 isValid
2.18.39.5 isDirect
2.18.39.6 isIndirect
2.18.39.7 checksum
2.18.39.8 institution
2.18.39.9 client
2.18.38.10 address
2.18.38.11 toString

2.19 db

2.19.1 putString(name, key, value)

2.19.2 getString(- var rXArray = stringToNumberArray(form.rX.value); name, key)

2.19.3 putHex(name, key, value)

2.19.4 getHex(name, key)

2.20 shh

2.20.1 post(postObject)

2.20.2 newIdentity()

2.20.3 hasIdentity(hexString)

2.20.4 newGroup(_id, _who)

2.20.5 addToGroup(_id, _who)

2.20.6 filter(object/string)

2.20.6.1 watch(callback)
2.20.6.2 stopWatching(callback)
2.20.6.3 get(callback)

項(xiàng)目源代碼

項(xiàng)目源代碼會(huì)逐步上傳到 Github艺骂,地址為 https://github.com/windstamp/jsonrpc

Contributor

  1. Windstamp, https://github.com/windstamp

Reference

  1. https://github.com/ethereum/wiki/wiki/JavaScript-API
  2. https://github.com/ethereum/web3.js
  3. https://web3js.readthedocs.io/en/1.0/index.html
  4. https://github.com/ethereum/wiki/wiki/JSON-RPC
  5. https://github.com/ethereum/web3.js/tree/master/example
  6. https://github.com/ethereum/wiki/wiki/Useful-%C3%90app-Patterns#examples
  7. https://github.com/ethereum/wiki/wiki/web3js-api-reference
  8. http://fredkschott.com/post/2014/03/understanding-error-first-callbacks-in-node-js/
  9. https://github.com/MikeMcl/bignumber.js/
  10. https://web3.learnblockchain.cn/0.2x.x/
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末隆夯,一起剝皮案震驚了整個(gè)濱河市钳恕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蹄衷,老刑警劉巖忧额,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異愧口,居然都是意外死亡宙址,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門调卑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)抡砂,“玉大人,你說(shuō)我怎么就攤上這事恬涧∽⒁妫” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵溯捆,是天一觀的道長(zhǎng)历筝。 經(jīng)常有香客問(wèn)我,道長(zhǎng)脉课,這世上最難降的妖魔是什么畸冲? 我笑而不...
    開(kāi)封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮劳跃,結(jié)果婚禮上谎仲,老公的妹妹穿的比我還像新娘。我一直安慰自己刨仑,他們只是感情好郑诺,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著杉武,像睡著了一般辙诞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上轻抱,一...
    開(kāi)封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天飞涂,我揣著相機(jī)與錄音,去河邊找鬼。 笑死较店,一個(gè)胖子當(dāng)著我的面吹牛志鹃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播泽西,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼曹铃,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了捧杉?” 一聲冷哼從身側(cè)響起陕见,我...
    開(kāi)封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎味抖,沒(méi)想到半個(gè)月后评甜,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡仔涩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年忍坷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片熔脂。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡佩研,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出霞揉,到底是詐尸還是另有隱情旬薯,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布适秩,位于F島的核電站绊序,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏秽荞。R本人自食惡果不足惜骤公,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望扬跋。 院中可真熱鬧阶捆,春花似錦、人聲如沸胁住。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)彪见。三九已至,卻和暖如春娱挨,著一層夾襖步出監(jiān)牢的瞬間余指,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留酵镜,地道東北人碉碉。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像淮韭,于是被迫代替她去往敵國(guó)和親垢粮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1. 文章摘要 【本文目標(biāo)】了解ETH生態(tài)下DAPP去中心化應(yīng)用程序的框架和交互流程靠粪,了解WEB3.JS的作用和接...
    筆名輝哥閱讀 6,026評(píng)論 0 49
  • 最新內(nèi)容會(huì)更新在主站深入淺出區(qū)塊鏈社區(qū)原文鏈接:Web3.js 0.20.x API 中文版翻譯 文檔原始鏈接為:...
    深入淺出區(qū)塊鏈閱讀 1,197評(píng)論 0 0
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理蜡吧,服務(wù)發(fā)現(xiàn),斷路器占键,智...
    卡卡羅2017閱讀 134,600評(píng)論 18 139
  • 郭芳艷 焦點(diǎn)網(wǎng)絡(luò)初級(jí)五期 堅(jiān)持原創(chuàng)分享第360天 今日不知道怎么回事昔善,也不知道最近對(duì)兒子過(guò)于理解和寬容...
    冰山藍(lán)鷹閱讀 98評(píng)論 0 0
  • 二月花的那個(gè)女人,對(duì)我有種莫名其妙的吸引畔乙,每次到千璽廣場(chǎng)君仆,我都被她吸引著,情不自禁地到她的商鋪看一看牲距。 她長(zhǎng)得小鳥(niǎo)...
    夢(mèng)夢(mèng)一一閱讀 182評(píng)論 1 1