当试图解锁AWS Lambda上的帐户时,我收到以下错误消息:
Error: Node error: {"code":-32601,"message":"The method personal_unlockAccount does not exist/is not available"}
at Function.validate (/var/task/node_modules/web3-providers/dist/web3-providers.cjs.js:111:18)
at HttpProvider._callee$ (/var/task/node_modules/web3-providers/dist/web3-providers.cjs.js:674:61)
at tryCatch (/var/task/node_modules/regenerator-runtime/runtime.js:45:40)
at Generator.invoke [as _invoke] (/var/task/node_modules/regenerator-runtime/runtime.js:271:22)
at Generator.prototype.(anonymous function) [as next] (/var/task/node_modules/regenerator-runtime/runtime.js:97:21)
at asyncGeneratorStep (/var/task/node_modules/@babel/runtime/helpers/asyncToGenerator.js:3:24)
at _next (/var/task/node_modules/@babel/runtime/helpers/asyncToGenerator.js:25:9)
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:228:7)'use strict';
const AWS = require('aws-sdk');
AWS.config.update({region: 'ap-northeast-1'});
const documentClient = new AWS.DynamoDB.DocumentClient();
const Web3 = require('web3');
const web3 = new Web3(new Web3.providers.HttpProvider(process.env['INFURA_ENDPOINT']));
const abiSource = require('./lib/myToken.json');
const abi = abiSource.abi;
const contractAddress = process.env['CONTRACT_ADDRESS'];
const myToken = web3.eth.Contract(abi, contractAddress);
.
.
.
exports.handler = async (event, context) => {
event = event.body || event;
const senderAddress = event.sender_address;
const privateKey = event.private_key;
try{
await web3.eth.personal.unlockAccount(senderAddress, privateKey, 600);
}catch(error){
console.log(error);
return getResponse(200, 'Internal server error');
}
.
.
.
};我的合同部署在Ropsten网络上,不过下面我有一些处理事务的代码,这会引发同样的错误。有什么想法可以解决这个/错误的原因吗?
节点版本: 8.0 Web3: 1.0.0-beta50 50
提前感谢!
发布于 2019-05-02 21:11:21
您需要为lambda安装一个web3层。有关如何做到这一点,请参见https://github.com/scenarex/web3-lambda-layer。
https://ethereum.stackexchange.com/questions/68734
复制相似问题