PHP WebShell
Текущая директория: /opt/BitGoJS/modules/sdk-rpc-wrapper/dist/src
Просмотр файла: evmRPCWrapper.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.EvmRPCWrapper = void 0;
const sdk_core_1 = require("@bitgo/sdk-core");
const sdk_coin_eth_1 = require("@bitgo/sdk-coin-eth");
const constants_1 = require("./constants");
class EvmRPCWrapper {
constructor(wallet) {
if (!wallet.baseCoin.isEVM()) {
throw new Error(`${wallet.coin()} is not an EVM coin.`);
}
this.wallet = wallet;
}
/**
* Handles RPC call from an EVM provider and invokes the appropriate BitGo SDK wallet method.
*
* @evmrpcRequest request
* @evmrpcRequest walletPassphrase
*/
async handleRPCCall(request, walletPassphrase) {
const { method, id, jsonrpc, params } = request;
let result;
switch (method) {
case constants_1.personal_sign:
const walletSignMessageOptions = {
message: {
messageRaw: params[0],
},
walletPassphrase,
};
result = await this.wallet.signMessage(walletSignMessageOptions);
break;
case constants_1.eth_signTypedData:
const walletSignTypedDataOptions = {
walletPassphrase,
typedData: {
typedDataRaw: params[0],
version: sdk_core_1.SignTypedDataVersion.V4,
},
};
result = await this.wallet.signTypedData(walletSignTypedDataOptions);
break;
case constants_1.eth_sendTransaction:
let option = params[0];
if (this.isString(params[0])) {
option = JSON.parse(params[0]);
}
result = await this.sendTransaction(option);
break;
default:
throw new Error(`method '${method}' not yet implemented`);
}
return {
id,
jsonrpc,
result,
};
}
async sendTransaction(options) {
const { to, data, gasPrice, gasLimit, value } = options;
const sendManyOptions = {
recipients: [
{
address: to,
amount: value,
data,
},
],
gasPrice: (0, sdk_coin_eth_1.hexStringToNumber)(gasPrice),
gasLimit: (0, sdk_coin_eth_1.hexStringToNumber)(gasLimit),
};
return await this.wallet.sendMany(sendManyOptions);
}
isString(str) {
if (str != null && typeof str.valueOf() === 'string') {
return true;
}
return false;
}
}
exports.EvmRPCWrapper = EvmRPCWrapper;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZtUlBDV3JhcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ldm1SUENXcmFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDhDQU15QjtBQUN6QixzREFBd0Q7QUFDeEQsMkNBQW9GO0FBRXBGLE1BQWEsYUFBYTtJQUd4QixZQUFZLE1BQWM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQXNCLEVBQUUsZ0JBQXdCO1FBQ2xFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDaEQsSUFBSSxNQUFNLENBQUM7UUFFWCxRQUFRLE1BQU0sRUFBRSxDQUFDO1lBQ2YsS0FBSyx5QkFBYTtnQkFDaEIsTUFBTSx3QkFBd0IsR0FBNkI7b0JBQ3pELE9BQU8sRUFBRTt3QkFDUCxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztxQkFDdEI7b0JBQ0QsZ0JBQWdCO2lCQUNqQixDQUFDO2dCQUNGLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFDLENBQUM7Z0JBQ2pFLE1BQU07WUFDUixLQUFLLDZCQUFpQjtnQkFDcEIsTUFBTSwwQkFBMEIsR0FBK0I7b0JBQzdELGdCQUFnQjtvQkFDaEIsU0FBUyxFQUFFO3dCQUNULFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO3dCQUN2QixPQUFPLEVBQUUsK0JBQW9CLENBQUMsRUFBRTtxQkFDakM7aUJBQ0YsQ0FBQztnQkFDRixNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO2dCQUNyRSxNQUFNO1lBRVIsS0FBSywrQkFBbUI7Z0JBQ3RCLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQzdCLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNqQyxDQUFDO2dCQUNELE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBNkMsQ0FBQyxDQUFDO2dCQUNuRixNQUFNO1lBQ1I7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLE1BQU0sdUJBQXVCLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBRUQsT0FBTztZQUNMLEVBQUU7WUFDRixPQUFPO1lBQ1AsTUFBTTtTQUNQLENBQUM7SUFDSixDQUFDO0lBRU8sS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUFpQztRQUM3RCxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUV4RCxNQUFNLGVBQWUsR0FBb0I7WUFDdkMsVUFBVSxFQUFFO2dCQUNWO29CQUNFLE9BQU8sRUFBRSxFQUFFO29CQUNYLE1BQU0sRUFBRSxLQUFLO29CQUNiLElBQUk7aUJBQ0w7YUFDRjtZQUNELFFBQVEsRUFBRSxJQUFBLGdDQUFpQixFQUFDLFFBQVEsQ0FBQztZQUNyQyxRQUFRLEVBQUUsSUFBQSxnQ0FBaUIsRUFBQyxRQUFRLENBQUM7U0FDdEMsQ0FBQztRQUNGLE9BQU8sTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sUUFBUSxDQUFDLEdBQVc7UUFDMUIsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLE9BQU8sR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3JELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGO0FBbEZELHNDQWtGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVWTVJQQ1JlcXVlc3QsIEVWTVJQQ1Jlc3VsdCwgRVZNUlBDVHJhbnNhY3Rpb25PcHRpb25zIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBXYWxsZXQsXG4gIFdhbGxldFNpZ25NZXNzYWdlT3B0aW9ucyxcbiAgV2FsbGV0U2lnblR5cGVkRGF0YU9wdGlvbnMsXG4gIFNpZ25UeXBlZERhdGFWZXJzaW9uLFxuICBTZW5kTWFueU9wdGlvbnMsXG59IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBoZXhTdHJpbmdUb051bWJlciB9IGZyb20gJ0BiaXRnby9zZGstY29pbi1ldGgnO1xuaW1wb3J0IHsgcGVyc29uYWxfc2lnbiwgZXRoX3NpZ25UeXBlZERhdGEsIGV0aF9zZW5kVHJhbnNhY3Rpb24gfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBFdm1SUENXcmFwcGVyIHtcbiAgcHJpdmF0ZSB3YWxsZXQ6IFdhbGxldDtcblxuICBjb25zdHJ1Y3Rvcih3YWxsZXQ6IFdhbGxldCkge1xuICAgIGlmICghd2FsbGV0LmJhc2VDb2luLmlzRVZNKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt3YWxsZXQuY29pbigpfSBpcyBub3QgYW4gRVZNIGNvaW4uYCk7XG4gICAgfVxuICAgIHRoaXMud2FsbGV0ID0gd2FsbGV0O1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgUlBDIGNhbGwgZnJvbSBhbiBFVk0gcHJvdmlkZXIgYW5kIGludm9rZXMgdGhlIGFwcHJvcHJpYXRlIEJpdEdvIFNESyB3YWxsZXQgbWV0aG9kLlxuICAgKlxuICAgKiBAZXZtcnBjUmVxdWVzdCByZXF1ZXN0XG4gICAqIEBldm1ycGNSZXF1ZXN0IHdhbGxldFBhc3NwaHJhc2VcbiAgICovXG4gIGFzeW5jIGhhbmRsZVJQQ0NhbGwocmVxdWVzdDogRVZNUlBDUmVxdWVzdCwgd2FsbGV0UGFzc3BocmFzZTogc3RyaW5nKTogUHJvbWlzZTxFVk1SUENSZXN1bHQ+IHtcbiAgICBjb25zdCB7IG1ldGhvZCwgaWQsIGpzb25ycGMsIHBhcmFtcyB9ID0gcmVxdWVzdDtcbiAgICBsZXQgcmVzdWx0O1xuXG4gICAgc3dpdGNoIChtZXRob2QpIHtcbiAgICAgIGNhc2UgcGVyc29uYWxfc2lnbjpcbiAgICAgICAgY29uc3Qgd2FsbGV0U2lnbk1lc3NhZ2VPcHRpb25zOiBXYWxsZXRTaWduTWVzc2FnZU9wdGlvbnMgPSB7XG4gICAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgICAgbWVzc2FnZVJhdzogcGFyYW1zWzBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgfTtcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgdGhpcy53YWxsZXQuc2lnbk1lc3NhZ2Uod2FsbGV0U2lnbk1lc3NhZ2VPcHRpb25zKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGV0aF9zaWduVHlwZWREYXRhOlxuICAgICAgICBjb25zdCB3YWxsZXRTaWduVHlwZWREYXRhT3B0aW9uczogV2FsbGV0U2lnblR5cGVkRGF0YU9wdGlvbnMgPSB7XG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgICB0eXBlZERhdGE6IHtcbiAgICAgICAgICAgIHR5cGVkRGF0YVJhdzogcGFyYW1zWzBdLFxuICAgICAgICAgICAgdmVyc2lvbjogU2lnblR5cGVkRGF0YVZlcnNpb24uVjQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgdGhpcy53YWxsZXQuc2lnblR5cGVkRGF0YSh3YWxsZXRTaWduVHlwZWREYXRhT3B0aW9ucyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIGV0aF9zZW5kVHJhbnNhY3Rpb246XG4gICAgICAgIGxldCBvcHRpb24gPSBwYXJhbXNbMF07XG4gICAgICAgIGlmICh0aGlzLmlzU3RyaW5nKHBhcmFtc1swXSkpIHtcbiAgICAgICAgICBvcHRpb24gPSBKU09OLnBhcnNlKHBhcmFtc1swXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgdGhpcy5zZW5kVHJhbnNhY3Rpb24ob3B0aW9uIGFzIHVua25vd24gYXMgRVZNUlBDVHJhbnNhY3Rpb25PcHRpb25zKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYG1ldGhvZCAnJHttZXRob2R9JyBub3QgeWV0IGltcGxlbWVudGVkYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkLFxuICAgICAganNvbnJwYyxcbiAgICAgIHJlc3VsdCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kVHJhbnNhY3Rpb24ob3B0aW9uczogRVZNUlBDVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCB7IHRvLCBkYXRhLCBnYXNQcmljZSwgZ2FzTGltaXQsIHZhbHVlIH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3Qgc2VuZE1hbnlPcHRpb25zOiBTZW5kTWFueU9wdGlvbnMgPSB7XG4gICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiB0byxcbiAgICAgICAgICBhbW91bnQ6IHZhbHVlLFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgZ2FzUHJpY2U6IGhleFN0cmluZ1RvTnVtYmVyKGdhc1ByaWNlKSxcbiAgICAgIGdhc0xpbWl0OiBoZXhTdHJpbmdUb051bWJlcihnYXNMaW1pdCksXG4gICAgfTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy53YWxsZXQuc2VuZE1hbnkoc2VuZE1hbnlPcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNTdHJpbmcoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoc3RyICE9IG51bGwgJiYgdHlwZW9mIHN0ci52YWx1ZU9mKCkgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=Выполнить команду
Для локальной разработки. Не используйте в интернете!