web3.eth.personal

12 篇文章 0 订阅
7 篇文章 0 订阅

web3.eth.personal

该web3-eth-personal软件包允许您与以太坊节点的帐户进行交互。

注意

其中许多功能都会发送敏感信息,如密码。永远不要通过不安全的Websocket或HTTP接口调用这些功能,因为您的密码将以纯文本形式发送!

var Personal = require('web3-eth-personal');

// 如果在以太坊支持的浏览器中,将设置“Personal.providers.givenProvider”。

var personal = new Personal(Personal.givenProvider || 'ws://some.local-or-remote.node:8546');

//或使用web3包

var Web3 = require('web3');

var web3 = new Web3(Web3.givenProvider || 'ws://some.local-or-remote.node:8546');

setProvider

web3.setProvider(myProvider)
web3.eth.setProvider(myProvider)
web3.shh.setProvider(myProvider)
web3.bzz.setProvider(myProvider)
...

将更改其模块的提供程序。

注意

当包叫做web3它也将设置接口所有子模块web3.eth,web3.shh等除非web3.bzz它需要在任何时候都一个单独的接口。

参数

  1. Object- myProvider:有效的提供者。
    返回

Boolean

示例

 var Web3 = require('web3');
    var web3 = new Web3('http://localhost:8545');
    // 或
    var web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));
    
    // 改变接口
    web3.setProvider('ws://localhost:8546');
    // 或
    web3.setProvider(new Web3.providers.WebsocketProvider('ws://localhost:8546'));
    
    // ipc接口
    var net = require('net');
    var web3 = new Web3('/Users/myuser/Library/Ethereum/geth.ipc', net); // mac 路径
    // 或
    var web3 = new Web3(new Web3.providers.IpcProvider('/Users/myuser/Library/Ethereum/geth.ipc', net)); // mac 路径
    //  windows 路径: "\\\\.\\pipe\\geth.ipc"
    //linux路径: "/users/myuser/.ethereum/geth.ipc"

提供者

web3.providers
web3.eth.providers
web3.shh.providers
web3.bzz.providers
...

包含当前可用的提供程序。

价值

Object 与以下接口:
• Object- HttpProvider:不推荐使用 HTTP提供程序,因为它不适用于订阅。
• Object- WebsocketProvider:Websocket提供程序是旧版浏览器中使用的标准。
• Object- IpcProvider:IPC提供程序在运行本地节点时使用node.js dapps。提供最安全的连接。

示例

var Web3 = require('web3');
//接口定义
var web3 = new Web3(Web3.givenProvider || 'ws://remotenode.com:8546');

var web3 = new Web3(Web3.givenProvider || new Web3.providers.WebsocketProvider('ws://remotenode.com:8546'));

var net = require('net');

var web3 = new Web3('/Users/myuser/Library/Ethereum/geth.ipc', net);

 var web3 = new Web3(new Web3.providers.IpcProvider('/Users/myuser/Library/Ethereum/geth.ipc', net)); 

givenProvider

web3.givenProvider
web3.eth.givenProvider
web3.shh.givenProvider
web3.bzz.givenProvider
...

在兼容以太坊的浏览器中使用web3.js时,它将使用该浏览器设置当前的本机提供程序。将通过(浏览器)环境返回给定的提供者,否则null。

返回

Object:给定的提供者集或null;

示例

currentProvider

web3.currentProvider
web3.eth.currentProvider
web3.shh.currentProvider
web3.bzz.currentProvider
...

否则将返回当前提供者null。

返回

Object:当前接口集或null;

示例

BatchRequest

new web3.BatchRequest()
new web3.eth.BatchRequest()
new web3.shh.BatchRequest()
new web3.bzz.BatchRequest()

用于创建和执行批处理请求的类。

参数

没有

返回

Object:使用以下方法:
• add(request):向批处理调用添加请求对象。
• execute():将执行批处理请求。

示例

var contract = new web3.eth.Contract(abi, address);

var batch = new web3.BatchRequest();
batch.add(web3.eth.getBalance.request('0x0000000000000000000000000000000000000000', 'latest', callback));
batch.add(contract.methods.balance(address).call.request({from: '0x0000000000000000000000000000000000000000'}, callback2));
batch.execute();

延伸

web3.extend(methods)
web3.eth.extend(methods)
web3.shh.extend(methods)
web3.bzz.extend(methods)
...

允许扩展web3模块。

注意

您还*.extend.formatters可以使用其他格式化函数来输入和输出格式。有关功能详细信息,请参阅源文件。

参数

  1. methods- Object:具有方法描述对象数组的扩展对象,如下所示:
    • property- String:(可选)要添加到模块的属性的名称。如果未设置任何属性,则会直接将其添加到模块中。
    • methods- Array:方法描述数组:
    • name- String:要添加的方法的名称。
    • call- String:RPC方法名称。
    • params- Number:(可选)该函数的参数数量。默认值为0。
    • inputFormatter- Array:(可选)inputformatter函数数组。每个数组项都响应一个函数参数,因此如果您希望某些参数不被格式化,请添加一个参数null。
    • outputFormatter - ``Function:(可选)可用于格式化方法的输出。

返回

Object:扩展模块。

示例

web3.extend({
    property: 'myModule',
    methods: [{
        name: 'getBalance',
        call: 'eth_getBalance',
        params: 2,
        inputFormatter: [web3.extend.formatters.inputAddressFormatter, web3.extend.formatters.inputDefaultBlockNumberFormatter],
        outputFormatter: web3.utils.hexToNumberString
    },{
        name: 'getGasPriceSuperFunction',
        call: 'eth_gasPriceSuper',
        params: 2,
        inputFormatter: [null, web3.utils.numberToHex]
    }]
});

web3.extend({
    methods: [{
        name: 'directCall',
        call: 'eth_callForFun',
    }]
});

console.log(web3);
> Web3 {
    myModule: {
        getBalance: function(){},
        getGasPriceSuperFunction: function(){}
    },
    directCall: function(){},
    eth: Eth {...},
    bzz: Bzz {...},
    ...
}

newAccount

web3.eth.personal.newAccount(password, [callback])
创建一个新帐户。

注意

切勿通过不安全的Websocket或HTTP提供程序调用此函数,因为您的密码将以纯文本格式发送!

参数

  1. password- String:用于加密此帐户的密码。

返回

Promise返回String:新创建的帐户的地址。

示例

web3.eth.personal.newAccount('!@superpassword')
.then(console.log);
> '0x1234567891011121314151617181920212223456'

签名

web3.eth.personal.sign(dataToSign, address, password [, callback])
使用特定帐户签署数据。

注意

通过不安全的HTTP RPC连接发送您的帐户密码非常不安全。

参数

  1. String - 要签名的数据。如果使用String,则使用web3.utils.utf8ToHex进行转换。
  2. String - 用于对数据进行签名的地址。
  3. String - 用于对数据进行签名的帐户的密码。
  4. Function - (可选)可选回调,将错误对象作为第一个参数返回,结果返回第二个参数。

返回

Promise返回String- 签名。

示例

web3.eth.personal.sign("Hello world", "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe", "test password!")
.then(console.log);
> "0x30755ed65396facf86c53e6217c52b4daebe72aa4941d89635409de4c9c7f9466d4e9aaec7977f05e923889b33c0d0dd27d7226b6e6f56ce737465c5cfd04be400"

web3.eth.personal.sign(web3.utils.utf8ToHex("Hello world"), "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe", "test password!")
.then(console.log);
> "0x30755ed65396facf86c53e6217c52b4daebe72aa4941d89635409de4c9c7f9466d4e9aaec7977f05e923889b33c0d0dd27d7226b6e6f56ce737465c5cfd04be400"

ecRecover

web3.eth.personal.ecRecover(dataThatWasSigned, signature [, callback])
恢复签署数据的帐户。

参数

  1. String - 签署的数据。如果使用String,则使用web3.utils.utf8ToHex进行转换。
  2. String - 签名。
  3. Function - (可选)可选回调,将错误对象作为第一个参数返回,结果返回第二个参数。

返回

Promise返回String- 帐户。

示例

web3.eth.personal.ecRecover("Hello world", "0x30755ed65396facf86c53e6217c52b4daebe72aa4941d89635409de4c9c7f9466d4e9aaec7977f05e923889b33c0d0dd27d7226b6e6f56ce737465c5cfd04be400").then(console.log);
> "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe"

signTransaction

web3.eth.personal.signTransaction(transaction, password [, callback])
签署交易。此帐户需要解锁。

注意

通过不安全的HTTP RPC连接发送您的帐户密码非常不安全。

参数

  1. Object- 要更多地签署web3.eth.sendTransaction()的交易数据。
  2. String- from帐户的密码,用于签署交易。
  3. Function - (可选)可选回调,将错误对象作为第一个参数返回,结果返回第二个参数。

返回

Promise返回Object- RLP编码的事务。该raw属性可用于使用web3.eth.sendSignedTransaction发送事务。

示例

web3.eth.signTransaction({
    from: "0xEB014f8c8B418Db6b45774c326A0E64C78914dC0",
    gasPrice: "20000000000",
    gas: "21000",
    to: '0x3535353535353535353535353535353535353535',
    value: "1000000000000000000",
    data: ""
}, 'MyPassword!').then(console.log);
> {
    raw: '0xf86c808504a817c800825208943535353535353535353535353535353535353535880de0b6b3a76400008025a04f4c17305743700648bc4f6cd3038ec6f6af0df73e31757007b7f59df7bee88da07e1941b264348e80c78c4027afc65a87b0a5e43e86742b8ca0823584c6788fd0',
    tx: {
        nonce: '0x0',
        gasPrice: '0x4a817c800',
        gas: '0x5208',
        to: '0x3535353535353535353535353535353535353535',
        value: '0xde0b6b3a7640000',
        input: '0x',
        v: '0x25',
        r: '0x4f4c17305743700648bc4f6cd3038ec6f6af0df73e31757007b7f59df7bee88d',
        s: '0x7e1941b264348e80c78c4027afc65a87b0a5e43e86742b8ca0823584c6788fd0',
        hash: '0xda3be87732110de6c1354c83770aae630ede9ac308d9f7b399ecfba23d923384'
    }
}

unlockAccount

web3.eth.personal.unlockAccount(address, password, unlockDuraction [, callback])
使用特定帐户签署数据。

注意

通过不安全的HTTP RPC连接发送您的帐户密码非常不安全。

参数

  1. address- String:帐户地址。
  2. password- String- 帐户的密码。
  3. unlockDuration- Number- 帐户保持解锁的持续时间。

示例

web3.eth.personal.unlockAccount("0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe", "test password!", 600)
.then(console.log('Account unlocked!'));
> "Account unlocked!"

// 去做
getAccounts,lockAccount,sendTransaction
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值