0x/ethereum-types
: Add geth eth_call types.
`0x/json-schemas`: Add geth eth_call properties to `CallData`. `@0x/web3-wrapper`: Add geth geth eth_call support.
This commit is contained in:
@@ -1,4 +1,13 @@
|
||||
[
|
||||
{
|
||||
"version": "7.2.0",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Add geth eth_call support",
|
||||
"pr": 2620
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "7.1.0",
|
||||
"changes": [
|
||||
|
@@ -6,6 +6,7 @@ import {
|
||||
BlockWithTransactionData,
|
||||
CallData,
|
||||
CallTxDataBase,
|
||||
GethCallOverrides,
|
||||
LogEntry,
|
||||
RawLogEntry,
|
||||
Transaction,
|
||||
@@ -22,6 +23,7 @@ import {
|
||||
BlockWithTransactionDataRPC,
|
||||
CallDataRPC,
|
||||
CallTxDataBaseRPC,
|
||||
GethCallOverridesRPC,
|
||||
TransactionReceiptRPC,
|
||||
TransactionRPC,
|
||||
TxDataRPC,
|
||||
@@ -168,6 +170,32 @@ export const marshaller = {
|
||||
};
|
||||
return callDataRPC;
|
||||
},
|
||||
/**
|
||||
* Marshall call overrides parameter for for a geth eth_call.
|
||||
* @param overrides overrides to marshal
|
||||
* @return marshalled overrides
|
||||
*/
|
||||
marshalCallOverrides(overrides: GethCallOverrides): GethCallOverridesRPC {
|
||||
const marshalled: GethCallOverridesRPC = {};
|
||||
for (const address in overrides) {
|
||||
if (address) {
|
||||
const override = overrides[address];
|
||||
const marshalledOverride: GethCallOverridesRPC[keyof GethCallOverridesRPC] = (marshalled[
|
||||
marshaller.marshalAddress(address)
|
||||
] = {});
|
||||
if (override.code !== undefined) {
|
||||
marshalledOverride.code = override.code;
|
||||
}
|
||||
if (override.nonce !== undefined) {
|
||||
marshalledOverride.nonce = utils.encodeAmountAsHexString(override.nonce);
|
||||
}
|
||||
if (override.balance !== undefined) {
|
||||
marshalledOverride.balance = utils.encodeAmountAsHexString(override.balance);
|
||||
}
|
||||
}
|
||||
}
|
||||
return marshalled;
|
||||
},
|
||||
/**
|
||||
* Marshall address
|
||||
* @param address address to marshall
|
||||
|
@@ -85,6 +85,14 @@ export interface CallDataRPC extends CallTxDataBaseRPC {
|
||||
from?: string;
|
||||
}
|
||||
|
||||
export interface GethCallOverridesRPC {
|
||||
[address: string]: {
|
||||
code?: string;
|
||||
nonce?: string;
|
||||
balance?: string;
|
||||
};
|
||||
}
|
||||
|
||||
// NodeType represents the type of the backing Ethereum node.
|
||||
export enum NodeType {
|
||||
Geth = 'GETH',
|
||||
|
@@ -562,9 +562,10 @@ export class Web3Wrapper {
|
||||
}
|
||||
const marshalledDefaultBlock = marshaller.marshalBlockParam(defaultBlock);
|
||||
const callDataHex = marshaller.marshalCallData(callData);
|
||||
const overrides = marshaller.marshalCallOverrides(callData.overrides || {});
|
||||
const rawCallResult = await this.sendRawPayloadAsync<string>({
|
||||
method: 'eth_call',
|
||||
params: [callDataHex, marshalledDefaultBlock],
|
||||
params: [callDataHex, marshalledDefaultBlock, overrides],
|
||||
});
|
||||
return rawCallResult;
|
||||
}
|
||||
|
Reference in New Issue
Block a user