以太坊开发文档09 - javascriptApi

2023-10-29

Web3 JavaScriptÐappAPI

为了让您的应用程序能够在以太坊上工作,您可以使用web3.js库web3提供对象在底层,它通过RPC调用与本地节点通信web3.js与任何暴露RPC层的以太坊节点一起工作。

web3包含eth对象 - web3.eth(专门用于以太坊区块链交互)和shh对象 - web3.shh(用于Whisper交互)。随着时间的推移,我们将介绍其他web3协议的其他对象。工作 示例可以在这里找到

如果您想使用web3.js查看一些更复杂的示例,请查看这些有用的应用程序模式

使用回调

由于此API旨在与本地RPC节点一起工作,并且其所有功能默认情况下都使用同步HTTP requests.con

如果你想做异步请求,你可以传递一个可选的回调函数作为最后一个参数。所有的回调函数都使用错误的第一个回调风格:

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

批量请求

批量请求允许排队请求并一次处理它们。

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

关于web3.js中大数字的说明

您将始终得到一个平衡值的BigNumber对象,因为JavaScript无法正确处理大数字。看下面的例子:

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

web3.js依赖于BigNumber库并自动添加它。

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"

下一个例子是行不通的,因为我们有超过20个浮动点,因此建议,让你在总平衡,只把它转换为其他单位呈现给用户的时候:

var balance = new BigNumber('13124.234435346456466666457455567456');

balance.plus(21).toString(10); // toString(10) converts it to a number string, but can only show max 20 floating points 
// "13145.23443534645646666646" // you number would be cut after the 20 floating point

Web3 JavascriptÐappAPI参考

用法

WEB3

web3对象提供了所有的方法。

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

web3.version.api
web3.version.api
// or async
web3.version.getApi(callback(error, result){ ... })
返回

String - 以太坊js api版本。

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

web3.version.client
web3.version.client
// or async
web3.version.getClient(callback(error, result){ ... })
返回

String - 客户机/节点版本。

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

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

String - 网络协议版本。

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

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

String - 以太坊协议版本。

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

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

String - 耳语协议版本。

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

web3.isConnected
web3.isConnected()

应该被调用来检查一个节点的连接是否存在

参数

没有

返回

Boolean

if(!web3.isConnected()) {

   // show some dialog to ask the user to start a node

} else {

   // start web3 filters, calls, etc

}

web3.setProvider
web3.setProvider(provider)

应该被称为设置提供者。

参数

没有

返回

undefined

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

web3.currentProvider
web3.currentProvider

将包含当前的提供者,如果有的话。这可以用来检查是否雾等已经提供商。

返回

Object- 提供者设置或null;

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

web3.reset
web3.reset(keepIsSyncing)

应该调用重置web3的状态。重设除经理之外的所有事物 卸载所有过滤器。停止轮询。

参数
  1. Boolean- 如果true它将卸载所有的过滤器,但将保持web3.eth.isSyncing()民意调查
返回

undefined

web3.reset();

web3.sha3
web3.sha3(string [, callback])
参数
  1. String - 使用SHA3算法进行散列的字符串
  2. Function - (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明
返回

String - 给定数据的SHA3。

var str = web3.sha3("Some ASCII string to be hashed");
console.log(str); // "0x536f6d6520415343494920737472696e6720746f20626520686173686564"

var hash = web3.sha3(str);
console.log(hash); // "0xb21dbc7a5eb6042d91f8f584af266f1a512ac89520f43562c6c1e37eab6eb0c4"

web3.toHex
web3.toHex(mixed);

将任何值转换为HEX。

参数
  1. String|Number|Object|Array|BigNumber - 解析为HEX的值。如果它是一个对象或数组,它将是JSON.stringify第一个。如果它是一个BigNumber,它将使它成为一个数字的HEX值。
返回

String- 十六进制字符串mixed

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

web3.toAscii
web3.toAscii(hexString);

将HEX字符串转换为ASCII字符串。

参数
  1. String - 要转换为ASCII码的HEX字符串。
返回

String- 由给定的ASCII字符串组成hexString

var str = web3.toAscii("0x657468657265756d000000000000000000000000000000000000000000000000");
console.log(str); // "ethereum"

web3.fromAscii
web3.fromAscii(string [, padding]);

将任何ASCII字符串转换为HEX字符串。

参数
  1. String - 要转换为HEX的ASCII字符串。
  2. Number - 返回的HEX字符串应该有的字节数。
返回

String - 转换后的HEX字符串。

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

var str2 = web3.fromAscii('ethereum', 32);
console.log(str2); // "0x657468657265756d000000000000000000000000000000000000000000000000"

web3.toDecimal
web3.toDecimal(hexString);

将HEX字符串转换为其数字表示形式。

参数
  1. String - 要转换为数字的HEX字符串。
返回

Number- 代表数据的数字hexString

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

web3.fromDecimal
web3.fromDecimal(number);

将数字或数字字符串转换为HEX表示形式。

参数
  1. Number|String - 要转换为HEX字符串的数字。
返回

String- 表示给定的HEX字符串number

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

web3.fromWei
web3.fromWei(number, unit)

将一些wei转换成以下的ethereum单元:

  • kwei/ada
  • mwei/babbage
  • gwei/shannon
  • szabo
  • finney
  • ether
  • kethergrand/einstein
  • mether
  • gether
  • tether
参数
  1. Number|String|BigNumber - 一个数字或BigNumber实例。
  2. String - 以上以太单位之一。
返回

String|BigNumber- 数字字符串或BigNumber实例,具体取决于给定的number参数。

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

web3.toWei
web3.toWei(number, unit)

将以太坊单位转换为wei。可能的单位是:

  • kwei/ada
  • mwei/babbage
  • gwei/shannon
  • szabo
  • finney
  • ether
  • kethergrand/einstein
  • mether
  • gether
  • tether
参数
  1. Number|String|BigNumber - 一个数字或BigNumber实例。
  2. String - 以上以太单位之一。
返回

String|BigNumber- 数字字符串或BigNumber实例,具体取决于给定的number参数。

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

web3.toBigNumber
web3.toBigNumber(numberOrHexString);

将给定的数字转换为BigNumber实例。

请参阅BigNumber上的注释

参数
  1. Number|String - 数字的数字,字符串或HEX字符串。
返回

BigNumber - 表示给定值的BigNumber实例。

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

web3.net

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

该属性是只读的,说明节点是否正在主动侦听网络连接。

返回

Booleantrue如果客户端正在主动侦听网络连接,否则false

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

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

该属性是只读的,并返回连接的对等体的数量。

返回

Number - 当前连接到客户端的对等点的数量。

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

web3.eth

包含以太坊区块链相关的方法。

var eth = web3.eth;

web3.eth.defaultAccount
web3.eth.defaultAccount

这个默认地址用于以下方法(可以通过指定from属性来选择覆盖它):

String,20字节 - 您拥有的任何地址,或者您拥有私钥的地址。

默认是 undefined

返回

String,20字节 - 当前设置的默认地址。

var defaultAccount = web3.eth.defaultAccount;
console.log(defaultAccount); // ''

// set the default block
web3.eth.defaultAccount = '0x8888f1f195afa192cfee860698584c030f4c9db1';

web3.eth.defaultBlock
web3.eth.defaultBlock

这个默认块用于以下方法(可选地,您可以通过将defaultBlock作为最后一个参数来覆盖defaultBlock):

默认块参数可以是以下之一:

  • Number - 一个块号码
  • String"earliest"genisis块
  • String"latest",最新的区块(当前区块链头)
  • String"pending",目前开采的区块(包括待交易)

默认是 latest

返回

Number|String - 查询状态时使用的默认块编号。

var defaultBlock = web3.eth.defaultBlock;
console.log(defaultBlock); // 'latest'

// set the default block
web3.eth.defaultBlock = 231;

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

此属性是只读的,并在节点正在同步时返回同步对象false

返回

Object|Boolean- 同步对象如下所示,当节点当前正在同步或false

  • startingBlockNumber- 同步开始的块号。
  • currentBlockNumber- 节点当前同步到的块的块号。
  • highestBlockNumber- 要同步到的估计块号码。
var sync = web3.eth.syncing;
console.log(sync);
/*
{
   startingBlock: 300,
   currentBlock: 312,
   highestBlock: 512
}
*/

web3.eth.isSyncing
web3.eth.isSyncing(callback);

这个便利函数调用callback每次同步开始,更新和停止。

返回

Object - 具有以下方法的isSyncing对象:

  • syncing.addCallback():添加另一个回调,当节点启动或停止同步时将调用该回调。
  • syncing.stopWatching():停止同步回调。
回调返回值
  • Booleantrue当同步开始和false停止时,回调将被触发
  • Object - 同步时,将返回同步对象:
    • startingBlockNumber- 同步开始的块号。
    • currentBlockNumber- 节点当前同步到的块的块号。
    • highestBlockNumber- 要同步到的估计块号码。
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...
        }
    }
});

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

这个属性是只读的,并返回采矿奖励去的coinbase地址。

返回

String - 客户的coinbase地址。

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

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

该属性是只读的,表示节点是否正在挖掘。

返回

Booleantrue如果客户正在挖矿,否则false

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

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

此属性是只读的,并返回节点正在挖掘的每秒散列数。

返回

Number - 每秒的哈希数。

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

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

此属性是只读的,并返回当前的天然气价格。天然气价格是由x最新块中位数天然气价格决定的。

返回

BigNumber - 当前天然气价格的一个BigNumber实例。

请参阅BigNumber上的注释

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

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

该属性是只读的,并返回节点控制的帐户列表。

返回

Array - 由客户端控制的地址数组。

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

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

此属性是只读的,并返回当前的块号。

返回

Number - 最近的块的数量。

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

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

(尚未实施)注册包含的给定地址web3.eth.accounts这允许将非私钥拥有的账户关联为一个拥有的账户(例如,合同钱包)。

参数
  1. String - 要注册的地址
  2. Function - (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明
返回

web3.eth.register("0x407d73d8a49eeb85d32cf465507dd71d507100ca")

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

(尚未执行)取消注册给定的地址。

参数
  1. String - 取消注册的地址。
  2. Function - (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明
返回

web3.eth.unregister("0x407d73d8a49eeb85d32cf465507dd71d507100ca")

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

获取给定块的地址余额。

参数
  1. String - 获得余额的地址。
  2. Number|String- (可选)如果你传递这个参数,它将不使用web3.eth.defaultBlock设置的默认块
  3. Function - (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明
返回

String - wei中给定地址的当前余额的BigNumber实例。

请参阅BigNumber上的注释

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

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

获取存储在地址的特定位置。

参数
  1. String - 从中​​获取存储的地址。
  2. Number - 存储的索引位置。
  3. Number|String- (可选)如果你传递这个参数,它将不使用web3.eth.defaultBlock设置的默认块
  4. Function - (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明
返回

String - 给定位置的存储值。

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

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

获取特定地址的代码。

参数
  1. String - 从中​​获取代码的地址。
  2. Number|String- (可选)如果你传递这个参数,它将不使用web3.eth.defaultBlock设置的默认块
  3. Function - (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明
返回

String- 给定地址的数据addressHexString

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

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

返回与块编号或块散列匹配的块。

参数
  1. String|Number - 块号或散列。或者是字符串"earliest""latest"或者"pending"默认的block参数那样
  2. Boolean- (可选,默认false)如果true返回的块将包含所有事务作为对象,如果false它只包含事务散列。
  3. Function - (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明
返回

Object - 块对象:

  • numberNumber- 块号。null当其挂起的块。
  • hashString,32字节 - 块的散列。null当其挂起的块。
  • parentHashString,32字节 - 父块的散列。
  • nonceString,8字节 - 生成的工作量证明的散列值。null当其挂起的块。
  • sha3UnclesString,32个字节 - 块中的数据。
  • logsBloomString,256字节 - 块的日志的布隆过滤器。null当其挂起的块。
  • transactionsRootString,32字节 - 块的事务树的根
  • stateRootString,32字节 - 块的最终状态树的根。
  • minerString,20 Bytes - 给予采矿奖励的受益人的地址。
  • difficultyBigNumber- 这个块的难度的整数。
  • totalDifficultyBigNumber- 直到这个块的链条总难度的整数。
  • extraDataString- 该块的“额外数据”字段。
  • sizeNumber- 以字节为单位整数该块的大小。
  • gasLimitNumber- 在这个区块允许的最大的气体。
  • gasUsedNumber- 此区块内所有交易使用的天然气总量。
  • timestampNumber- 块整理时的unix时间戳。
  • transactionsArray- 根据最后给定的参数,事务对象数组或32字节事务散列。
  • unclesArray- 一些叔叔哈希。
var info = web3.eth.block(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": []
}
*/

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

返回给定块中的事务数。

参数
  1. String|Number - 块号或散列。或者是字符串"earliest""latest"或者"pending"默认的block参数那样
  2. Function - (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明
返回

Number - 给定块中的事务数量。

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

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

通过给定的叔叔索引位置返回一个块叔叔。

参数
  1. String|Number - 块号或散列。或者是字符串"earliest""latest"或者"pending"默认的block参数那样
  2. Number - 叔叔的指标位置。
  3. Boolean- (可选,默认false)如果true返回的块将包含所有事务作为对象,如果false它只包含事务散列。
  4. Function - (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明
返回

Object - 回国的叔叔。有关返回值,请参阅web3.eth.getBlock()

:叔叔不包含个人交易。

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

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

返回匹配给定事务哈希的事务。

参数
  1. String - 交易哈希。
  2. Function - (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明
返回

Object- 一个交易对象的哈希值transactionHash

  • hashString,32字节 - 交易的散列。
  • nonceNumber- 发件人在此之前进行的交易次数。
  • blockHashString,32字节 - 当这个事务处于null挂起状态时,这个事务所在的块的散列
  • blockNumberNumber- 该交易所在null的区号。
  • transactionIndexNumber- 块中交易指标位置的整数。null当它待定。
  • fromString,20字节 - 发件人的地址。
  • toString,20字节 - 接收器的地址。null当其创建合同交易时。
  • valueBigNumber- 在魏的价值转移。
  • gasPriceBigNumber- 魏先生提供的天然气价格。
  • gasNumber- 发件人提供的气体。
  • inputString- 与交易一起发送的数据。
var blockNumber = 668;
var indexOfTransaction = 0

var transaction = web3.eth.getTransaction(blockNumber, indexOfTransaction);
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"
}
*/

web3.eth.getTransactionFromBlock
getTransactionFromBlock(hashStringOrNumber, indexNumber [, callback])

根据块散列或数字以及交易索引位置返回交易。

参数
  1. String - 一个块号或散列。或者是字符串"earliest""latest"或者"pending"默认的block参数那样
  2. Number - 交易指标头寸。
  3. Function - (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明
返回

Object- 一个事务对象,请参阅web3.eth.getTransaction

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

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

按事务散列返回事务的接收。

请注意,收据不可用于未完成的交易。

参数
  1. String - 交易哈希。
  2. Function - (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明
返回

Object- 交易收据对象,或未null找到收据时:

  • blockHashString,32字节 - 此事务所在块的散列。
  • blockNumberNumber- 此交易所在的区号。
  • transactionHashString,32字节 - 交易的散列。
  • transactionIndexNumber- 块中交易指标位置的整数。
  • fromString,20字节 - 发件人的地址。
  • toString,20字节 - 接收器的地址。null当其创建合同交易时。
  • cumulativeGasUsedNumber- 该交易在区块中执行时使用的天然气总量。
  • gasUsedNumber- 这一特定交易单独使用的天然气量。
  • contractAddressString- 20字节 - 创建合同地址(如果交易是创建合同),否则null
  • logs: Array- 该事务生成的日志对象数组。
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.
     }, ...]
}

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

获取从该地址发送的交易数量。

参数
  1. String - 从中​​获取交易数量的地址。
  2. Number|String- (可选)如果你传递这个参数,它将不使用web3.eth.defaultBlock设置的默认块
  3. Function - (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明
返回

Number - 从给定地址发送的交易数量。

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

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

发送一个事务到网络。

参数
  1. Object - 要发送的交易对象:
    • fromString- 发送帐户的地址。如果未指定,请使用web3.eth.defaultAccount属性。
    • toString- (可选)消息的目标地址,对于创建合同的事务没有定义。
    • valueNumber|String|BigNumber- (可选)魏为交易而转让的价值,如果是合同创造交易,则也为捐赠。
    • gasNumber|String|BigNumber- (可选,默认:待定)交易使用的天然气量(未使用的天然气可退还)。
    • gasPriceNumber|String|BigNumber- (可选,默认:待定)wei中此次交易的天然气价格,默认为平均网络天然气价格。
    • dataString- (可选)包含消息关联数据的字节字符串,或者创建合同的事务中的初始化代码。
    • nonceNumber - (可选)一个随机数的整数。这允许覆盖使用相同的随机数的您自己的未决事务。
  2. Function - (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明
返回

String - 32字节的事务散列为HEX字符串。

如果事务是创建合同,则使用web3.eth.getTransactionReceipt()获取合同地址。


// compiled solidity source code using https://chriseth.github.io/cpp-ethereum/
var code = "603d80600c6000396000f3007c01000000000000000000000000000000000000000000000000000000006000350463c6888fa18114602d57005b600760043502
8060005260206000f3";

web3.eth.sendTransaction({data: code}, function(err, address) {
  if (!err)
    console.log(address); // "0x7f9fade1c0d57a7af66ab4ead7c2eb7b11a91385"
});

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

执行消息调用事务,该消息调用事务在节点的VM中直接执行,但不会开发到区块链中。

参数
  1. Object- 一个事务对象见web3.eth.sendTransaction,不同之处在于调用该from属性也是可选的。
  2. Number|String- (可选)如果你传递这个参数,它将不使用web3.eth.defaultBlock设置的默认块
  3. Function - (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明
返回

String - 呼叫的返回数据,例如一个代码函数的返回值。

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

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

执行消息调用或事务,该消息调用或事务在节点的VM中直接执行,但从未开采到区块链中并返回所使用的气体量。

参数

请参阅web3.eth.sendTransaction,期望所有属性都是可选的。

返回

Number - 用于模拟呼叫/交易的废气。

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

web3.eth.filter
// 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);
});
参数
  1. String|Object- 字符串"latest""pending"分别监视最新块或未决事务中的更改。或者如下所示的过滤器选项对象:
    • fromBlockNumber|String- 最早的块的数量(latest可以表示最近的和pending当前的挖掘块)。默认情况下latest
    • toBlockNumber|String- 最新块的编号(latest可以表示最近的和pending当前正在挖掘的块)。默认情况下latest
    • addressString- 一个地址或一个地址列表,只能从特定账户获取日志。
    • topicsArray of Strings- 必须分别出现在日志条目中的值数组。顺序是重要的,如果你想离开话题使用null,例如[null, '0x00...']
返回

Object - 具有以下方法的过滤器对象:

  • filter.get(callback):返回所有符合过滤器的日志条目。
  • filter.watch(callback):监视适合过滤器的状态更改并调用回调。详情请参阅此说明
  • filter.stopWatching():停止监视并卸载节点中的过滤器。一旦完成,应该总是被调用。
观看回调返回值
  • String- 使用"latest"参数时,它返回最后一个传入块的块散列。
  • String- 使用"pending"参数时,它返回最后一个添加挂起事务的事务散列。
  • Object - 使用手动筛选器选项时,它将按如下方式返回一个日志对象:
    • logIndexNumber- 块中日志索引位置的整数。null当其挂起的日志。
    • transactionIndexNumber- 整数交易指标头寸日志是从中创建的。null当其挂起的日志。
    • transactionHashString,32字节 - 创建此日志的事务的散列值。null当其挂起的日志。
    • blockHashString,32字节 - 这个日志所在的块的哈希nullnull当其挂起的日志。
    • blockNumberNumbernull当其挂起时,该日志所在的块号null当其挂起的日志。
    • addressString,32字节 - 这个日志起源的地址。
    • dataString- 包含日志的一个或多个32字节的非索引参数。
    • topicsArray of StringsDATA索引日志参数0到4 32字节数组稳固性:第一个主题是事件签名散列(例如Deposit(address,bytes32,uint256)),除了用说明anonymous声明事件)。

注意事件过滤器返回值请参阅合同事件

var filter = web3.eth.filter('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();

web3.eth.contract
web3.eth.contract(abiArray)

为合同合同创建一个合同对象,可用于启动地址上的合同。你可以在这里阅读更多关于事件

参数
  1. Array - 包含合同功能和事件描述的ABI数组。
返回

Object - 合同对象,可以启动如下:

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

然后,您可以在地址上启动现有合同,也可以使用编译的字节码来部署合同:

// Instantiate from an existing address:
var myContractInstance = MyContract.at(myContractAddress);


// Or deploy a new contract:

// Deploy the contract asyncronous:
var myContractReturned = MyContract.new(param1, param2, {
   data: myContractCode,
   gas: 300000,
   from: mySenderAddress}, 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: myContractCode, 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

注意当你部署一个新的合同时,如果合同代码仍然在地址上(使用web3.eth.getCode(),你应该检查接下来的12个块,以确保一个分支没有改变。

// 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",
        ...
    }
    */
});

合同方法
// Automatically determines the use of call or sendTransaction based on the method type
myContractInstance.myMethod(param1 [, param2, ...] [, transactionObject] [, callback]);

// Explicitly calling this method
myContractInstance.myMethod.call(param1 [, param2, ...] [, transactionObject] [, callback]);

// Explicitly sending a transaction to this method
myContractInstance.myMethod.sendTransaction(param1 [, param2, ...] [, transactionObject] [, callback]);

契约对象公开可以使用参数和事务对象调用的契约方法。

参数
  • String|Number - (可选)功能的零个或多个参数。
  • Object- (可选)(上一个)最后一个参数可以是事务对象,请参阅web3.eth.sendTransaction参数1以获取更多信息。
  • Function - (可选)如果传递回调作为最后一个参数,则HTTP请求将变为异步。详情请参阅此说明
返回

String- 如果其调用结果数据,如果其发送事务创建了合同地址或事务哈希,请参阅web3.eth.sendTransaction以获取详细信息。

// 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){ ... });

合约事件
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);
});

你可以使用像过滤器这样的事件,它们有相同的方法,但是你传递不同的对象来创建事件过滤器。

参数
  1. Object- 你想过滤日志的索引返回值,例如{'valueA': 1, 'valueB': [myFirstAddress, mySecondAddress]}默认情况下,所有的过滤器值都设置为null这意味着,它们将匹配从本合同发出的任何给定类型的事件。
  2. Object- 其他过滤器选项,请参阅过滤器参数1了解更多。默认情况下,filterObject将字段“地址”设置为合同的地址。另外第一个话题是事件的签名。
  3. Function- (可选)如果您将回叫作为最后一个参数传递,它将立即开始观看,您不需要拨打电话myEvent.watch(function(){})详情请参阅此说明
回调返回

Object - 事件对象如下:

  • argsObject- 来自事件的论据。
  • eventString- 事件名称。
  • logIndexNumber- 块中日志索引位置的整数。
  • transactionIndexNumber- 整数交易指标头寸日志是从中创建的。
  • transactionHashString,32字节 - 创建此日志的事务的散列值。
  • addressString,32字节 - 这个日志起源的地址。
  • blockHashString,32字节 - 这个日志所在的块的哈希null
  • blockNumberNumbernull当其挂起时,该日志所在的块号
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();

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

将调用所有由此合约创建的事件的回调。

参数
  1. Object- 其他过滤器选项,请参阅过滤器参数1了解更多。默认情况下,filterObject将字段“地址”设置为合同的地址。另外第一个话题是事件的签名。
  2. Function- (可选)如果您将回叫作为最后一个参数传递,它将立即开始观看,您不需要拨打电话myEvent.watch(function(){})详情请参阅此说明
回调返回

Object- 查看更多的合同事件

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
myEvent.stopWatching();

web3.eth.getCompilers
web3.eth.getCompilers([callback])

获取可用编译器的列表。

参数
  1. Function - (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明
返回

Array - 可用编译器的字符串数组。

var number = web3.eth.getCompilers();
console.log(number); // ["lll", "solidity", "serpent"]

web3.eth.compile.solidity
web3.eth.compile.solidity(sourceString [, callback])

编译可靠性源代码。

参数
  1. String - 可靠性源代码。
  2. Function - (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明
返回

Object - 合同和编译器信息。

var source = "" + 
    "contract test {\n" +
    "   function multiply(uint a) returns(uint d) {\n" +
    "       return a * 7;\n" +
    "   }\n" +
    "}\n";
var compiled = web3.eth.compile.solidity(source);
console.log(compiled); 
// {
  "test": {
    "code": "0x605280600c6000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa114602e57005b60376004356041565b8060005260206000f35b6000600782029050604d565b91905056",
    "info": {
      "source": "contract test {\n\tfunction multiply(uint a) returns(uint d) {\n\t\treturn a * 7;\n\t}\n}\n",
      "language": "Solidity",
      "languageVersion": "0",
      "compilerVersion": "0.8.2",
      "abiDefinition": [
        {
          "constant": false,
          "inputs": [
            {
              "name": "a",
              "type": "uint256"
            }
          ],
          "name": "multiply",
          "outputs": [
            {
              "name": "d",
              "type": "uint256"
            }
          ],
          "type": "function"
        }
      ],
      "userDoc": {
        "methods": {}
      },
      "developerDoc": {
        "methods": {}
      }
    }
  }
}

web3.eth.compile.lll
web3. eth.compile.lll(sourceString [, callback])

编译LLL源代码。

参数
  1. String - LLL源代码。
  2. Function - (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明
返回

String - 编译的LLL代码为HEX字符串。

var source = "...";

var code = web3.eth.compile.lll(source);
console.log(code); // "0x603880600c6000396000f3006001600060e060020a600035048063c6888fa114601857005b6021600435602b565b8060005260206000f35b600081600702905091905056"

web3.eth.compile.serpent
web3.eth.compile.serpent(sourceString [, callback])

编译蛇的源代码。

参数
  1. String - 蛇的源代码。
  2. Function - (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明
返回

String - 编译后的代码为HEX字符串。

var source = "...";

var code = web3.eth.compile.serpent(source);
console.log(code); // "0x603880600c6000396000f3006001600060e060020a600035048063c6888fa114601857005b6021600435602b565b8060005260206000f35b600081600702905091905056"

web3.eth.namereg
web3.eth.namereg

返回GlobalRegistrar对象。

用法

参见namereg示例


web3.db

web3.db.putString
web3.db.putString(db, key, value)

当我们要在本地leveldb数据库中存储一个字符串时,应该调用这个方法。

参数
  1. String - 要存储到的数据库。
  2. String - 商店的名称。
  3. String - 要存储的字符串值。
返回

Booleantrue如果成功,否则false

参数是db名称,第二个是键,第三个是字符串值。

web3.db.putString('testDB', 'key', 'myString') // true

web3.db.getString
web3.db.getString(db, key)

当我们想从本地leveldb数据库获取字符串时,应该调用这个方法。

参数
  1. String - 要从中检索的数据库字符串名称。
  2. String - 商店的名称。
返回

String - 存储的值。

param是db名字,第二个是字符串值的关键字。

var value = web3.db.getString('testDB', 'key');
console.log(value); // "myString"

web3.db.putHex
web3.db.putHex(db, key, value)

当我们要在本地leveldb数据库中以HEX形式存储二进制数据时,应该调用这个方法。

参数
  1. String - 要存储到的数据库。
  2. String - 商店的名称。
  3. String - 要存储的HEX字符串。
返回

Booleantrue如果成功,否则false

web3.db.putHex('testDB', 'key', '0x4f554b443'); // true

web3.db.getHex
web3.db.getHex(db, key)

这个方法应该被调用,当我们想从本地leveldb数据库中获得一个HEX形式的二进制数据。

参数
  1. String - 要存储到的数据库。
  2. String - 商店的名称。
返回

String - 存储的十六进制值。

param是db名字,第二个是键值。

var value = web3.db.getHex('testDB', 'key');
console.log(value); // "0x4f554b443"

web3.shh

耳语概述

var shh = web3.shh;

web3.shh.post

web3.shh.post(object [,callback])

这个方法应该被调用,当我们要发送悄悄话消息到网络。

参数
  1. Object - 帖子对象:
    • fromString,60字节HEX - (可选)发件人的身份。
    • toString,60字节HEX - (可选)接收者的身份。当耳语将加密的消息,只有接收者可以解密它。
    • topicsArray of Strings- 主题数组Strings,供接收者识别消息。
    • payloadString|Number|Object- 消息的有效载荷。之前会自动转换为HEX字符串。
    • priorityNumber- 从...(?)开始的优先级的整数。
    • ttlNumber- 以秒为单位的整数时间。
  2. Function - (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明
返回

Booleantrue如果消息发送,则返回;否则false

var identity = web3.shh.newIdentity();
var topic = 'example';
var payload = 'hello whisper world!';

var message = {
  from: identity,
  topics: [topic],
  payload: payload,
  ttl: 100,
  workToProve: 100 // or priority TODO
};

web3.shh.post(message);

web3.shh.newIdentity
web3.shh.newIdentity([callback])

应该被称为创造新的身份。

参数
  1. Function - (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明
返回

String - 一个新的身份HEX字符串。

var identity = web3.shh.newIdentity();
console.log(identity); // "0xc931d93e97ab07fe42d923478ba2465f283f440fd6cabea4dd7a2c807108f651b7135d1d6ca9007d5b68aa497e4619ac10aa3b27726e1863c1fd9b570d99bbaf"

web3.shh.hasIdentity
web3.shh.hasIdentity(identity, [callback])

应该被调用,如果我们想检查用户是否给出了身份。

参数
  1. String - 要检查的身份。
  2. Function - (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明
返回

Booleantrue如果身份存在则返回,否则返回false

var identity = web3.shh.newIdentity();
var result = web3.shh.hasIdentity(identity);
console.log(result); // true

var result2 = web3.shh.hasIdentity(identity + "0");
console.log(result2); // false

web3.shh.newGroup
// TODO: not implemented yet

web3.shh.addToGroup
// TODO: not implemented yet

web3.shh.filter
var filter = web3.shh.filter(options)

// watch for changes
filter.watch(function(error, result){
  if (!error)
    console.log(result);
});

留意接收到的低语消息。

参数
  1. Object - 过滤器选项:
    • topicsArray of Strings- 通过这个主题过滤消息。您可以使用以下组合:
      • ['topic1', 'topic2'] == 'topic1' && 'topic2'
      • ['topic1', ['topic2', 'topic3']] == 'topic1' && ('topic2' || 'topic3')
      • [null, 'topic1', 'topic2'] == ANYTHING && 'topic1' && 'topic2'- > null作为通配符使用
    • to:按照消息接收者的身份进行过滤。如果提供并且节点具有此标识,则它将解密传入的加密消息。
  2. Function - (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明
回调返回

Object - 传入消息:

  • fromString,60字节 - 邮件的发件人,如果指定了发件人。
  • toString,60字节 - 消息的接收者,如果指定了接收者。
  • expiryNumber- 此消息应该过期的时间(秒)的整数(?)。
  • ttlNumber- 消息在系统中以秒(?)为单位浮动的时间的整数。
  • sentNumber- 消息发送时的unix时间戳的整数。
  • topicsArray of StringString消息包含主题数组
  • payloadString- 消息的有效载荷。
  • workProvedNumber- 这个消息在发送之前需要的整数(?)。

web3.eth.sendIBANTransaction
var txHash = web3.eth.sendIBANTransaction('0x00c5496aee77c1ba1f0854206a26dda82a81d6d8', 'XE81ETHXREGGAVOFYORK', 0x100);

从用户帐户发送IBAN交易到目的地IBAN地址。

参数
  • string - 我们要发送交易的地址
  • string - 我们想要发送交易的IBAN地址
  • value - 我们想要在IBAN交易中发送的价值

web3.eth.iban
var i = new web3.eth.iban("XE81ETHXREGGAVOFYORK");

web3.eth.iban.fromAddress
var i = web3.eth.iban.fromAddress('0x00c5496aee77c1ba1f0854206a26dda82a81d6d8');
console.log(i.toString()); // 'XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS

web3.eth.iban.fromBban
var i = web3.eth.iban.fromBban('ETHXREGGAVOFYORK');
console.log(i.toString()); // "XE81ETHXREGGAVOFYORK"

web3.eth.iban.createIndirect
var i = web3.eth.iban.createIndirect({
  institution: "XREG",
  identifier: "GAVOFYORK"
});
console.log(i.toString()); // "XE81ETHXREGGAVOFYORK"

web3.eth.iban.isValid
var valid = web3.eth.iban.isValid("XE81ETHXREGGAVOFYORK");
console.log(valid); // true

var valid2 = web3.eth.iban.isValid("XE82ETHXREGGAVOFYORK");
console.log(valid2); // false, cause checksum is incorrect

var i = new web3.eth.iban("XE81ETHXREGGAVOFYORK");
var valid3 = i.isValid();
console.log(valid3); // true

web3.eth.iban.isDirect
var i = new web3.eth.iban("XE81ETHXREGGAVOFYORK");
var direct = i.isDirect();
console.log(direct); // false

web3.eth.iban.isIndirect
var i = new web3.eth.iban("XE81ETHXREGGAVOFYORK");
var indirect = i.isIndirect();
console.log(indirect); // true

web3.eth.iban.checksum
var i = new web3.eth.iban("XE81ETHXREGGAVOFYORK");
var checksum = i.checksum();
console.log(checksum); // "81"

web3.eth.iban.institution
var i = new web3.eth.iban("XE81ETHXREGGAVOFYORK");
var institution = i.institution();
console.log(institution); // 'XREG'

web3.eth.iban.client
var i = new web3.eth.iban("XE81ETHXREGGAVOFYORK");
var client = i.client();
console.log(client); // 'GAVOFYORK'

web3.eth.iban.address
var i = new web3.eth.iban('XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS');
var address = i.address();
console.log(address); // '00c5496aee77c1ba1f0854206a26dda82a81d6d8'

web3.eth.iban.toString
var i = new web3.eth.iban('XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS');
console.log(i.toString()); // 'XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS'

JavaScript运行时环境

以太坊实现了一个JavaScript运行时环境(JSRE),可以在交互(控制台)或非交互(脚本)模式下使用。

以太坊的Javascript控制台公开了完整的web3 JavaScript Dapp API管理API

交互式使用:JSRE REPL控制台

所述ethereum CLI可执行geth具有JavaScript控制台(一个读取,评价&打印循环 = REPL暴露JSRE),其可以与所述启动consoleattach子命令。console子命令启动GETH节点,然后打开控制台。attach子命令将无法启动GETH节点,而是试图打开上运行GETH实例的控制台。

$ geth console
$ geth attach

如果geth节点使用非默认的ipc端点运行,或者您想通过rpc接口连接,则attach节点接受端点。

$ geth attach ipc:/some/custom/path
$ geth attach rpc:http://191.168.1.1:8545

请注意,默认情况下,geth节点不会启动rpc服务,并且由于安全原因,并不是通过此接口提供所有功能。--rpcapigeth节点启动时的参数或者admin.startRPC可以覆盖这些默认值

如果您需要日志信息,请从以下开始:

$ geth --verbosity 5 console 2>> /tmp/eth.log

否则,请将您的日志静音,以免污染您的控制台:

$ geth console 2>> /dev/null

要么

$ geth --verbosity 0 console

注意:由于数据库只能被一个进程访问,这意味着geth console如果你有一个已经运行的geth实例,就不能运行。

非交互式使用:JSRE脚本模式

也可以将文件执行到JavaScript intepreter。consoleattach子接受--exec这是一个JavaScript语句的参数。

$ geth --exec "eth.blockNumber" attach

这将打印正在运行的geth实例的当前块号。

或者使用更复杂的语句执行脚本:

$ geth --exec 'loadScript("/tmp/checkbalances.js")' attach
$ geth --jspath "/tmp" --exec 'loadScript("checkbalances.js")' attach

在这里找到一个示例脚本

使用--jspath <path/to/my/js/root>为您的js脚本设置libdir。loadScript()没有绝对路径的参数将被理解为相对于这个目录。

您可以通过键入exit或干脆退出控制台CTRL-C

警告

JSRE使用Otto JS VM有一些限制:

  • “严格使用”将解析,但什么都不做。
  • 正则表达式引擎(re2 / regexp)与ECMA5规范不完全兼容。

请注意,Otto的另一个已知的限制(即缺少定时器)被照顾。以太坊JSRE实现了setTimeoutsetInterval除此之外,控制台还提供admin.sleep(seconds)了“阻断睡眠”方法admin.sleepBlocks(number)

自从ethereum.js使用该bignumer.js库(MIT Expat License)以来,它也是自动安装的。

计时器

除了JS的全部功能(按照ECMA5)之外,JSRE还增加了各种定时器。它实现了setIntervalclearIntervalsetTimeoutclearTimeout您可以用来使用的浏览器窗口。它还提供了admin.sleep(seconds)一个基于块的定时器的实现,admin.sleepBlocks(n)定时器一直睡到所添加的新块的数量等于或大于等于n,则认为“等待n个确认”。

管理API

除了官方的DApp API接口之外,以太坊节点还支持额外的管理API。这些API是使用JSON-RPC提供的,并遵循与DApp API中使用的相同的约定。去ethereum包带有一个控制台客户端,它支持所有额外的API。

如何

可以指定通过接口提供的一组API,--${interface}api用于访问ethereum守护进程命令行参数。Windows上,${interface}可以rpcunix或命名管道上http接口或ipcunix套接字使用哪个接口

例如,geth --ipcapi "admin,eth,miner" --rpcapi "eth,web3"

  • 通过IPC接口启用管理员,官方DApp和矿工API
  • 通过RPC接口启用eth和web3 API

请注意,通过rpc接口提供API 将使每个人都可以访问可以访问此接口的API(例如DApp)。所以要小心你启用了哪些API。默认情况下,geth通过ipc接口启用所有的API,而接口上只启用db,eth,net和web3 API rpc

要确定哪个接口提供的API modules可以使用,例如通过ipcunix系统上的接口:

echo '{"jsonrpc":"2.0","method":"modules","params":[],"id":1}' | nc -U $datadir/geth.ipc

将提供所有启用的模块,包括版本号:

{  
   "id":1,
   "jsonrpc":"2.0",
   "result":{  
      "admin":"1.0",
      "db":"1.0",
      "debug":"1.0",
      "eth":"1.0",
      "miner":"1.0",
      "net":"1.0",
      "personal":"1.0",
      "shh":"1.0",
      "txpool":"1.0",
      "web3":"1.0"
   }
}

积分

这些额外的API遵循与官方DApp API相同的约定。Web3可以扩展并用于使用这些额外的API。

不同的功能被分成多个较小的逻辑分组API。给出的例子是Javascript控制台,但可以很容易地转换为rpc请求。

2例子:

  • 安慰: miner.start()

  • IPC: echo '{"jsonrpc":"2.0","method":"miner_start","params":[],"id":1}' | nc -U $datadir/geth.ipc

  • RPC: curl -X POST --data '{"jsonrpc":"2.0","method":"miner_start","params":[],"id":74}' localhost:8545

以THREADS的数量作为参数:

  • 安慰: miner.start(4)

  • IPC: echo '{"jsonrpc":"2.0","method":"miner_start","params":[4],"id":1}' | nc -U $datadir/geth.ipc

  • RPC: curl -X POST --data '{"jsonrpc":"2.0","method":"miner_start","params":[4],"id":74}' localhost:8545

管理API参考


个人

personalAPI公开方法为个人的方法来管理,控制或监视您的节点。它允许有限的文件系统访问。


personal.listAccounts
personal.listAccounts

列出所有帐户

返回

与帐户收集

personal.listAccounts


personal.newAccount
personal.newAccount(passwd)

创建一个新的密码保护的帐户

返回

string 新帐户的地址

personal.newAccount("mypasswd")


personal.deleteAccount
personal.deleteAccount(addr, passwd)

删除具有给定地址和密码的帐户

返回

指示账户是否被删除

personal.deleteAccount(eth.coinbase, "mypasswd")


personal.unlockAccount
personal.unlockAccount(addr, passwd, duration)

使用给定的地址,密码和可选的持续时间(秒)解锁账户。

返回

boolean 指示账户是否被解锁

personal.unlockAccount(eth.coinbase, "mypasswd", 300)


TxPool

txpool.status
txpool.status

待处理/排队交易的数量

返回

pending 所有可处理的交易

queued 所有不可处理的交易

txpool.status


管理

admin公开的管理,控制或监视您节点的方法。它允许有限的文件系统访问。


admin.chainSyncStatus
admin.chainSyncStatus

打印区块链同步的信息。

返回

blocksAvailable,还没有被下载的块

blocksWaitingForImport,导入之前等待下载的块

estimate,在节点导入所有块之前的(非常粗略的)估计

importing,目前正在导入的块


admin.verbosity
admin.verbosity(level)

记录器详细级别设置级别1-6:沉默,错误,警告,信息,调试,细节

> admin.verbosity(6)

admin.nodeInfo
admin.nodeInfo
返回

节点上的信息。

> admin.nodeInfo
{
   Name: 'Ethereum(G)/v0.9.36/darwin/go1.4.1',
   NodeUrl: 'enode://c32e13952965e5f7ebc85b02a2eb54b09d55f553161c6729695ea34482af933d0a4b035efb5600fc5c3ea9306724a8cbd83845bb8caaabe0b599fc444e36db7e@89.42.0.12:30303',
   NodeID: '0xc32e13952965e5f7ebc85b02a2eb54b09d55f553161c6729695ea34482af933d0a4b035efb5600fc5c3ea9306724a8cbd83845bb8caaabe0b599fc444e36db7e',
   IP: '89.42.0.12',
   DiscPort: 30303,
   TCPPort: 30303,
   Td: '0',
   ListenAddr: '[::]:30303'
}

要连接到节点,请使用enode-format nodeUrl作为addPeer或CLI参数的参数bootnodes


admin.addPeer
admin.addPeer(nodeURL)

通过一个nodeURL连接到网络上的对等。nodeURL需求是在的eNode URL格式geth将保持连接,直到它关闭,并尝试重新连接,如果连接间歇性下降。

您可以使用nodeInfo查找自己的节点URL,或者在节点启动时查看日志,例如:

[P2P Discovery] Listening, enode://6f8a80d14311c39f35f516fa664deaaaa13e85b2f7493f37f6144d86991ec012937307647bd3b9a82abe2974e1407241d54947bbb39763a4cac9f77166ad92a0@54.169.166.226:30303
返回

true 成功。

> admin.addPeer('enode://6f8a80d14311c39f35f516fa664deaaaa13e85b2f7493f37f6144d86991ec012937307647bd3b9a82abe2974e1407241d54947bbb39763a4cac9f77166ad92a0@54.169.166.226:30303')

admin.peers
admin.peers
返回

包含关于连接的同级的信息的对象数组。

> admin.peers
[ { ID: '0x6cdd090303f394a1cac34ecc9f7cda18127eafa2a3a06de39f6d920b0e583e062a7362097c7c65ee490a758b442acd5c80c6fce4b148c6a391e946b45131365b', Name: 'Ethereum(G)/v0.9.0/linux/go1.4.1', Caps: 'eth/56, shh/2', RemoteAddress: '54.169.166.226:30303', LocalAddress: '10.1.4.216:58888' } { ID: '0x4f06e802d994aaea9b9623308729cf7e4da61090ffb3615bc7124c5abbf46694c4334e304be4314392fafcee46779e506c6e00f2d31371498db35d28adf85f35', Name: 'Mist/v0.9.0/linux/go1.4.2', Caps: 'eth/58, shh/2', RemoteAddress: '37.142.103.9:30303', LocalAddress: '10.1.4.216:62393' } ]

admin.importChain
admin.importChain(file)

从编组二进制格式导入区块链。 请注意,在导入的块被插入到链中之前,区块链被重置(生成)。

返回

true否则就成功了false

admin.importChain('path/to/file')
// true

admin.exportChain
admin.exportChain(file)

以二进制格式将区块链导出到给定文件。

返回

true否则就成功了false

admin.exportChain('path/to/file')

admin.startRPC
 admin.startRPC(host, portNumber, corsheader, modules)

启动JSON-RPC的HTTP服务器

返回

true否则就成功了false

admin.startRPC("127.0.0.1", 8545, "*", "web3,db,net,eth")
// true

admin.stopRPC
admin.stopRPC() 

停止JSON-RPC的HTTP服务器

返回

true否则就成功了false

admin.stopRPC()
// true

admin.sleepBlocks
admin.sleepBlocks(n)

睡n块。


admin.datadir
admin.datadir

该节点存储其数据的目录

返回

目录成功

admin.datadir
'/Users/username/Library/Ethereum'

admin.setSolc
admin.setSolc(path2solc)

设置固体编译器

返回

描述路径有效时编译器版本的字符串,否则为错误

admin.setSolc('/some/path/solc')
'solc v0.9.29
Solidity Compiler: /some/path/solc
'

admin.startNatSpec
 admin.startNatSpec()

激活NatSpec:将事务发送到合同时,将使用注册表查找和url提取来为其检索真实的合同信息。它允许用户提供真实的特定于合同的确认消息。


admin.stopNatSpec
 admin.stopNatSpec()

停用NatSpec:发送一个事务时,用户将被提示一个通用的确认消息,没有合约信息被提取


admin.getContractInfo
 admin.getContractInfo(address)

这将检索地址上合同的合同信息json

返回

返回合同信息对象

例子
> info = admin.getContractInfo(contractaddress)
> source = info.source
> abi = info.abiDefinition

admin.saveInfo
admin.saveInfo(contract.info, filename);

合约信息json写入目标文件,计算其内容hash。这个内容哈希然后可以用来将公共URL与合约信息公开可用和可验证的地方联系起来。如果您注册codehash(contractaddress上的合同代码的散列)。

返回

contenthash否则就成功了undefined

例子
source = "contract test {\n" +
"   /// @notice will multiply `a` by 7.\n" +
"   function multiply(uint a) returns(uint d) {\n" +
"      return a * 7;\n" +
"   }\n" +
"} ";
contract = eth.compile.solidity(source).test;
txhash = eth.sendTransaction({from: primary, data: contract.code });
// after it is uncluded
contractaddress = eth.getTransactionReceipt(txhash);
filename = "/tmp/info.json";
contenthash = admin.saveInfo(contract.info, filename);

admin.register
admin.register(address, contractaddress, contenthash);

将内容哈希注册到codehash(contractaddress上的合约代码的哈希)。寄存器事务从第一个参数中的地址发送。交易需要在规范链上进行处理和确认,才能使注册生效。

返回

true否则就成功了false

例子
source = "contract test {\n" +
"   /// @notice will multiply `a` by 7.\n" +
"   function multiply(uint a) returns(uint d) {\n" +
"      return a * 7;\n" +
"   }\n" +
"} ";
contract = eth.compile.solidity(source).test;
txhash = eth.sendTransaction({from: primary, data: contract.code });
// after it is uncluded
contractaddress = eth.getTransactionReceipt(txhash);
filename = "/tmp/info.json";
contenthash = admin.saveInfo(contract.info, filename);
admin.register(primary, contractaddress, contenthash);

admin.registerUrl
admin.registerUrl(address, codehash, contenthash);

这将注册一个Contant哈希到合同的codehash。这将用于查找合约信息json 文件。第一个参数中的地址将用于发送事务。

返回

true否则就成功了false

例子
source = "contract test {\n" +
"   /// @notice will multiply `a` by 7.\n" +
"   function multiply(uint a) returns(uint d) {\n" +
"      return a * 7;\n" +
"   }\n" +
"} ";
contract = eth.compile.solidity(source).test;
txhash = eth.sendTransaction({from: primary, data: contract.code });
// after it is uncluded
contractaddress = eth.getTransactionReceipt(txhash);
filename = "/tmp/info.json";
contenthash = admin.saveInfo(contract.info, filename);
admin.register(primary, contractaddress, contenthash);
admin.registerUrl(primary, contenthash, "file://"+filename);

矿工

miner.start
miner.start(threadCount)

给定的并行线程开始挖掘threadNumber这是一个可选的参数。

返回

true否则就成功了false

miner.start()
// true

miner.stop
miner.stop(threadCount)

阻止threadCount矿工。这是一个可选的参数。

返回

true否则就成功了false

miner.stop()
// true

miner.startAutoDAG
miner.startAutoDAG()

开始ethash DAG的自动预生成这个过程确保后续时代的DAG可用,允许在新纪元开始后立即开采。如果这被大多数网络节点使用,则在时期转换期间,阻塞时间预期是正常的。自动DAG在采矿开始时自动打开,当矿工停止时关闭。

返回

true否则就成功了false


miner.stopAutoDAG
miner.stopAutoDAG()

停止ethash DAG的自动预生成采矿停止时,自动DAG将自动关闭。

返回

true否则就成功了false


miner.makeDAG
miner.makeDAG(blockNumber, dir)

为时代生成DAG blockNumber/epochLengthdir指定一个目标目录,如果dir是空字符串,那么ethash将使用~/.ethashLinux和MacOS以及~\AppData\EthashWindows 的默认目录DAG文件的名字是full-<revision-number>R-<seedhash>

返回

true否则就成功了false


miner.hashrate
miner.hashrate
返回

以H / s返回当前的散列速率。


miner.setExtra
miner.setExtra("extra data")

找到块时设置块的额外数据。限于32个字节。


miner.setGasPrice
miner.setGasPrice(gasPrice)

设置矿工的价格


miner.setEtherbase
miner.setEtherbase(account)

设置以太基地,将获得采矿奖励的地址。


调试

debug.setHead
debug.setHead(blockNumber)

将区块链的当前头部设置为由blockNumber引用的块请参阅web3.eth.getBlock以获取有关块字段的更多详细信息,并通过编号或散列进行查找。

返回

true否则就成功了false

debug.setHead(eth.blockNumber-1000)

debug.seedHash
debug.seedHash(blockNumber)

返回给定块所在时元的散列值。

返回

散列在十六进制格式

> debug.seedHash(eth.blockNumber)
'0xf2e59013a0a379837166b59f871b20a8a0d101d1c355ea85d35329360e69c000'

debug.processBlock
debug.processBlock(blockNumber)

在调试模式下,使用VM 处理由blockNumber引用的给定块请参阅web3.eth.getBlock以获取有关块字段的更多详细信息,并通过编号或散列进行查找。结合使用setHead,这可以用来重播块的处理来调试虚拟机的执行。

返回

true否则就成功了false

debug.processBlock(140101)

debug.getBlockRlp
debug.getBlockRlp(blockNumber)

返回块的RLP编码的十六进制表示形式。请参阅web3.eth.getBlock以获取有关块字段的更多详细信息,并通过编号或散列进行查找。

返回

块的RLP编码的十六进制表示。

> debug.getBlockRlp(131805)    'f90210f9020ba0ea4dcb53fe575e23742aa30266722a15429b7ba3d33ba8c87012881d7a77e81ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794a4d8e9cae4d04b093aac82e6cd355b6b963fb7ffa01f892bfd6f8fb2ec69f30c8799e371c24ebc5a9d55558640de1fb7ca8787d26da056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083bb9266830202dd832fefd880845534406d91ce9e5448ce9ed0af535048ce9ed0afce9ea04cf6d2c4022dfab72af44e9a58d7ac9f7238ffce31d4da72ed6ec9eda60e1850883f9e9ce6a261381cc0c0'

debug.printBlock
debug.printBlock(blockNumber)

打印有关块的信息,如大小,总难度,以及正确格式化的页眉字段。

请参阅web3.eth.getBlock以获取有关块字段的更多详细信息,并通过编号或散列进行查找。

返回

格式化字符串表示的块

> debug.printBlock(131805)
BLOCK(be465b020fdbedc4063756f0912b5a89bbb4735bd1d1df84363e05ade0195cb1): Size: 531.00 B TD: 643485290485 {
NoNonce: ee48752c3a0bfe3d85339451a5f3f411c21c8170353e450985e1faab0a9ac4cc
Header:
[

        ParentHash:         ea4dcb53fe575e23742aa30266722a15429b7ba3d33ba8c87012881d7a77e81e
        UncleHash:          1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347
        Coinbase:           a4d8e9cae4d04b093aac82e6cd355b6b963fb7ff
        Root:               1f892bfd6f8fb2ec69f30c8799e371c24ebc5a9d55558640de1fb7ca8787d26d
        TxSha               56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421
        ReceiptSha:         56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421
        Bloom:              00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
        Difficulty:         12292710
        Number:             131805
        GasLimit:           3141592
        GasUsed:            0
        Time:               1429487725
        Extra:              ΞTHΞЯSPHΞЯΞ
        MixDigest:          4cf6d2c4022dfab72af44e9a58d7ac9f7238ffce31d4da72ed6ec9eda60e1850
        Nonce:              3f9e9ce6a261381c
]
Transactions:
[]
Uncles:
[]
}

debug.dumpBlock
debug.dumpBlock(blockNumber)
返回

块号或块散列引用的块的原始转储,或者如果找不到块,则为undefined。请参阅web3.eth.getBlock获取有关块字段的更多详细信息,并通过编号或散列查找。

> debug.dumpBlock(eth.blockNumber)

debug.metrics
debug.metrics(raw)
返回

指标的收集,参见这个 wiki页面的更多信息

> metrics(true)

loadScript
 loadScript('/path/to/myfile.js');

加载一个JavaScript文件并执行它。相对路径被解释为相对jspath于其被指定为命令行标志,请参阅命令行选项

睡觉
sleep(s)

睡了几秒钟。

的setInterval
setInterval(s, func() {})
clearInterval
的setTimeout
clearTimeout

WEB3

web3公开的所有方法的JavaScript API


netweb3.net的快捷方式


ETH

ethweb3.eth的快捷方式除了web3eth通过公开的接口web3.js一些额外的电话被曝光。


eth.sign
eth.sign(signer, data)
eth.pendingTransactions
eth.pendingTransactions

返回属于其中一个用户的未决事务eth.accounts


eth.resend
eth.resend(tx, <optional gas price>, <optional gas limit>)

重新发送所返回的给定交易,pendingTransactions()并允许您覆盖交易的天然气价格和天然气限额。

eth.sendTransaction({from: eth.accounts[0], to: "...", gasPrice: "1000"})
var tx = eth.pendingTransactions()[0]
eth.resend(tx, web3.toWei(10, "szabo"))

shhweb3.shh的快捷方式


D b

dbweb3.db的快捷方式


检查

inspect方法漂亮打印给定的值(支持颜色)


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以太坊开发文档09 - javascriptApi 的相关文章

  • Determining IP information for eth问题解决

    前言 在Linux网卡ifcfg网卡配置项详解文章中提到一个BOOTPROTO 61 配置项 它的意思是指网卡启动时获取ip的方式 xff0c 可以是dhcp或者静态ip 方式 xff0c 如果设置为none说明是不指定ip设置方式 一 问
  • solidity 学习2.批量转账,存入eth。读取数据。

    pragma solidity 0 4 17 import 39 zeppelin solidity contracts token ERC20 StandardToken sol 39 contract BLEOS is Standard
  • Huawei交换机链路聚合eth-trunk配置

    华三的动态对接华为的lacp 华三的静态对接华为的手工 华为手工模式配置 xff1a 1 执行命令 system view xff0c 进入系统视图 2 执行命令 interface eth trunk trunk id xff0c 进入
  • Eth-Trunk链路聚合原理、静态和动态配置

    Eth Trunk原理 静态和动态配置 Eth Trunk链路聚合概述Eth Trunk链路聚合模式静态配置模式LACP动态模式 Eth Trunk链路聚合概述 在组网中经常遇到的问题 xff0c 单条链路的宽带无法满足整个园区的流量需求时
  • Eth-trunk :LACP模式链路聚合实战

    Eth trunk LACP模式链路聚合实战 需求描述 PC1和PC3数据vlan10 xff0c 网段为192 168 10 0 24PC2和PC4数据vlan20 xff0c 网段为192 168 20 0 24确保设备之间互联互通 x
  • Determining IP information for eth问题解决

    前言 在Linux网卡ifcfg网卡配置项详解文章中提到一个BOOTPROTO 61 配置项 它的意思是指网卡启动时获取ip的方式 xff0c 可以是dhcp或者静态ip 方式 xff0c 如果设置为none说明是不指定ip设置方式 一 问
  • Eth-Trunk链路聚合理论

    目录 什么是Eth trunk Eth Trunk的一些概念 LACP模式 手工模式 链路聚合工作机制 负载分担方式 Eth trunk转发原理 什么是Eth trunk Eth trunk xff08 链路聚合技术 xff09 是一种捆绑
  • ETH-Cubli阅读

    7月底补完
  • LWIP (1.1) ETH Module以太网模块

    STM32 以太网 ETH模块说明 1 overview 2 ETH module in stm32h743 STM32H743 为例 开局一张图 ETHER 模块 红框所示 以STM32H743为例 32 BIt AHB为内部高速总线 D
  • 链路层--->ETH(以太网)协议

    文章目录 ETH xff08 以太网 xff09 协议格式 xff1a ARP协议格式 链路层负责相邻设备之间的数据帧传输 xff0c 典型协议有 xff1a ETHH xff08 以太网协议 xff09 xff0c ARP协议 MTU x
  • 以太坊合并升级的全面介绍

    以太坊主网即将通过称为 合并 的升级 从工作量证明转向权益证明共识机制 合并 Merge 是以太坊生态系统一系列主要升级的一部分 此外还有Surge Verge Purge以及Splurge 多次升级的目的是为了提高以太坊的可扩展性和能效
  • Ethere以太坊学习笔记

    以下不一定全 准确率99 1字节等于2gas 1 变量类型 是否是真 bool 数字类型 int uint 有符号和无符号整形 默认256 int8到uint256 地址类型 address 20字节长度 属性方法 send call ca
  • 以太坊智能合约编程入门(一)

    原文地址 https medium com ConsenSys a 101 noob intro to programming smart contracts on ethereum 695d15c1dab4 1 ABBewYWJfdIFh
  • 以太坊学习笔记(一)——免费获得测试ETH

    以太坊除了主网之外 还有 Ropsten Kovan Rinkeby等测试环境可供学习 在浏览器钱包插件MetaMask里有以下几个测试环境可以供我们使用 目前以太坊开发最常用的测试网络是Rinkeby 我们就讲讲如何通过Rinkeby免费
  • 【Web3 系列开发教程——创建你的第一个 NFT(7)】创建一个 NFT DApp,给你的 NFT 赋予属性,例如图片

    在本文中 你将构建一个 NFT 铸币机 并学习如何通过使用 Metamask 和 Web3 工具将你的智能合约连接到 React 前端 来创建一个NFT dApp 我认为 对于具备 Web2 开发背景的开发者来说 最大的挑战之一是弄清楚如何
  • 区块链自定义节点

    本地自定义节点 1 cmd中 安装好geth后 cmd geth help 检查是否geth是否安装好 然后输入命令geth datadir testNet dev rpc console 自定义本地的节点 2 metaMask 再在met
  • 使用PHP语言实现ETH 及 token转账

    以太坊转账 废话不多说直接上代码 代码下载地址 https download csdn net download u012841825 11021920 github代码 用你们可爱的小手 点一下星星 https github com zc
  • 以太坊的MPT树,以及编码,leveldb存储

    声明 此为使用网上多处资料整理而成 由于很多地方内容相同 已经分不清哪里是原创 一 MPT树 1 Trie树 Trie 又称为字典树或者前缀树 prefix tree 属于查找树的一种 它与平衡二叉树的主要不同点包括 每个节点数据所携带的
  • EOS智能合约安全开发终极指南

    EOS智能合约安全终极指南 当世界上最大的ICO EOS于2018年6月推出时 加密社区变得持怀疑态度 并且由于软件错误而被冻结了2天 但快进4个月 EOS今天占了以太网今天所做交易的两倍以上 通过免费和更快速交易的承诺 EOS最顶级的Da
  • java-ipfs-api.jar的食用方法

    引入java ipfs api jar 从仓库引入 在pom xml中添加仓库

随机推荐

  • python输入三门课程成绩_python脚本如何输入成绩求平均分?

    python脚本如何输入成绩求平均分 python脚本输入成绩求平均分的方法 脚本要实现功能 1 输入学生学号 2 依次输入学生的三门科目成绩 3 计算该学生的平均成绩 并打印 4 平均成绩保留两位小数点 计算该学生语文成绩占总成绩的百分比
  • 《消息队列高手课》该如何选择消息队列

    作为一个程序员 相信你一定听过 没有银弹 这个说法 这里面的银弹是指能轻松杀死狼人 用白银做的子弹 什么意思呢 我对这句话的理解是说 在软件工程中 不存在像 银弹 这样可以解决一切问题的设计 架构或软件 每一个软件系统 它都是独一无二的 你
  • SpringMVC的文件上传

    SpringMVC的文件上传 SpringMVC的文件上传 1 SpringMVC的请求 文件上传 客户端表单实现 2 SpringMVC的请求 文件上传 文件上传的原理 3 SpringMVC的请求 文件上传 单文件上传的代码实现1 4
  • 春眠不觉晓,redis知多少(2)

    春眠不觉晓 redis知多少 第二篇 4 持久化 4 1 原因 4 2 redis持久化机制 4 2 1 RDB 4 2 2 AOF 5 JAVA客户端 Jedis 5 1 介绍 5 2 使用步骤 5 3 Jedis操作各种redis的数据
  • 【毕设记录】Stata稳健性检验~ Robustness

    一些网上看的 自己用的tips汇总 1 DID 平行趋势检验 自己用的 1 在论文呈现上 可以绘制平行趋势图 也可以做一个Table表示平行趋势检验的结果 2 学习文献的做法 创建政策发生前两年的变量 比如政策是Rights 解释变量是A
  • python情感词典_sentimentpy模块进行中文文本情感分类

    sentimentpy是我根据R语言的一个文本情感分析包sentiment进行开发的 开发的初衷有 R的sentiment已经被弃坑 没人维护 Python比R更擅长文本处理 sentiment包不支持中文 而sentimentpy包有如下
  • nginx源码编译安装出现“make[1]: Leaving directory `/usr/local/nginx’“解决办法

    因为我所有的操作步骤都是按照上面来的 我的解决办法也非常的简单 如果你走到make这一步的时候只出现了一行 make 1 Leaving directory usr local nginx 1 12 1 提示 不用管它 继续走make in
  • 五人合伙最佳股份分配_五人合伙股份分配协议书范本

    股份合作企业与合伙企业是当前改制 改组中倍受关注的企业组织形式 那么合伙股份转让协议书又是怎么一回事呢 以下是在小编为大家整理的合伙股份转让协议书范文 感谢您的阅读 合伙股份转让协议书范文1转让方 甲方 身份证号码 住址 受让方 甲方 身份
  • Unity制作摇杆

    1 导入UGUI与Tools资源包 Unity中就会出现两个插件 2 导入人物模型资源包全部导入完之后 3 新建Plane 把人物模型拖到场景中 4 给人物模型制作动画状态机 4 1找到人物模型动画 并将全部的动画类型设置为Genic类型
  • 串行测试 并行测试_什么是并行测试,为什么要采用它?

    串行测试 并行测试 随着技术的进步 随着组织从手动测试转向Selenium测试自动化 测试解决方案变得比以往更具可扩展性 但是 大多数组织仍在努力的领域之一是可并行运行多个测试的可伸缩性 许多公司仍在使用顺序测试方法来提供质量保证 这会浪费
  • 大学生团体天梯赛(第六届)

    题目地址 天梯赛 include
  • 深度学习8

    Generative Adversarial Network 正如我们前面所说的 GAN里面有两个重要的东西 其中一个就是Generator Generator可以是一个NN 它的输入是一个vector 它的输出是一个更高维的vector
  • JSP-javabean技术

  • ELK 4.5——加入机器学习

    如果你也是 Elaticsearch 的粉丝 或者机器学习的爱好者 你肯定不会错过这个东西 5 月份 Elaticsearch 推出了新版本 5 4 准确地说是 Elastic Stack 全家桶都更新为 5 4 了 在 X pack 中的
  • Angular input延迟防抖debounceTime

    import Component OnInit from angular core import AbstractControl FormBuilder FormGroup Validators from angular forms imp
  • 【代码复现】NER之GlobalPointer解析

    前言 在NER任务中 主要分为三类实体 嵌套实体 非嵌套实体 不连续实体 今天分享方法以end to end的方式解决前两个问题 GlbalPointer 它利用全局归一化的思路来进行命名实体识别 NER 可以无差别地识别嵌套实体和非嵌套实
  • Mysql事务---MVCC详解

    Mysql数据库事务隔离级别 SQL 标准定义了四个隔离级别 READ UNCOMMITTED 读取未提交 事务的修改 即使没有提交 对其他事务也都是可见的 事务能够读取未提交的数据 这种情况称为脏读 READ COMMITTED 读取已提
  • Jetpack学习-1-Lifecycle+Activity源码分析

    解耦是软件开发亘古不变的追求 而Lifecycle正是这一名言的体现 Android开发过程中 有些功能不可避免与页面的生命周期关联 LifeCycle作为Jetpack中具有生命周期感知姓的组件 通过感知activity fragment
  • CVE-2022-22963:Spring Cloud Function SpEL 远程代码执行漏洞

    读者需知 本文仅供学习使用 由于传播和利用此文所造成的损失均由使用者本人负责 文章作者不为此承担责任 简介 SpringCloud Function作为SpringCloud家族成员最早在2017年提出 旨在为快速发展的Serverless
  • 以太坊开发文档09 - javascriptApi

    Web3 JavaScript appAPI 为了让您的应用程序能够在以太坊上工作 您可以使用web3 js库web3提供的对象 在底层 它通过RPC调用与本地节点通信 web3 js与任何暴露RPC层的以太坊节点一起工作 web3包含et