@massalabs/wallet-provider 3.2.1-dev.20250520085601 → 3.2.1-dev.20250520130105
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/bearbyWallet/BearbyAccount.d.ts.map +1 -1
- package/dist/esm/bearbyWallet/BearbyAccount.js +15 -4
- package/dist/esm/bearbyWallet/BearbyAccount.js.map +1 -1
- package/dist/esm/massaStation/MassaStationAccount.d.ts +4 -3
- package/dist/esm/massaStation/MassaStationAccount.d.ts.map +1 -1
- package/dist/esm/massaStation/MassaStationAccount.js +66 -18
- package/dist/esm/massaStation/MassaStationAccount.js.map +1 -1
- package/dist/esm/massaStation/types.d.ts +17 -1
- package/dist/esm/massaStation/types.d.ts.map +1 -1
- package/dist/esm/massaStation/types.js.map +1 -1
- package/dist/esm/massaStation/utils/network.d.ts +2 -2
- package/dist/esm/massaStation/utils/network.d.ts.map +1 -1
- package/dist/esm/massaStation/utils/network.js +5 -15
- package/dist/esm/massaStation/utils/network.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BearbyAccount.d.ts","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyAccount.ts"],"names":[],"mappings":"AASA,OAAO,EACL,OAAO,EACP,YAAY,EAEZ,cAAc,EACd,WAAW,EAIX,OAAO,EACP,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,UAAU,EACV,aAAa,EAIb,QAAQ,EAER,eAAe,
|
|
1
|
+
{"version":3,"file":"BearbyAccount.d.ts","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyAccount.ts"],"names":[],"mappings":"AASA,OAAO,EACL,OAAO,EACP,YAAY,EAEZ,cAAc,EACd,WAAW,EAIX,OAAO,EACP,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,UAAU,EACV,aAAa,EAIb,QAAQ,EAER,eAAe,EAEhB,MAAM,uBAAuB,CAAC;AAQ/B,qBAAa,aAAc,YAAW,QAAQ;IAClB,OAAO,EAAE,MAAM;gBAAf,OAAO,EAAE,MAAM;IAEzC,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;YAUa,SAAS;IAYV,OAAO,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBvC,SAAS,CACpB,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,CAAC,EAAE,OAAO,GACd,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAerC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAmBpD,QAAQ,CACnB,MAAM,EAAE,MAAM,EAEd,KAAK,CAAC,EAAE,gBAAgB,GACvB,OAAO,CAAC,SAAS,CAAC;IAUR,SAAS,CACpB,MAAM,EAAE,MAAM,EAEd,KAAK,CAAC,EAAE,gBAAgB,GACvB,OAAO,CAAC,SAAS,CAAC;IAUR,QAAQ,CACnB,EAAE,EAAE,OAAO,GAAG,MAAM,EACpB,MAAM,EAAE,MAAM,EAEd,KAAK,CAAC,EAAE,gBAAgB,GACvB,OAAO,CAAC,SAAS,CAAC;YAeP,UAAU;IAKX,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAkChD,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IA0DjD,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAwDxD,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IAwBtD,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAmC1D,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IA6B9D,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC;IAQxC,cAAc,CACzB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,UAAU,GAAG,MAAyB,EAC9C,KAAK,UAAO,GACX,OAAO,CAAC,UAAU,EAAE,CAAC;IA0BX,WAAW,CACtB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,EAC7B,KAAK,UAAO,GACX,OAAO,CAAC,UAAU,EAAE,CAAC;CAkBzB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { web3, } from '@hicaru/bearby.js';
|
|
2
2
|
import { errorHandler } from '../errors/utils/errorHandler';
|
|
3
3
|
import { operationType } from '../utils/constants';
|
|
4
|
-
import { DEPLOYER_BYTECODE, formatNodeStatusObject, Mas, MAX_GAS_CALL, Operation, OperationStatus, SmartContract, StorageCost, strToBytes, bytesToStr, JsonRpcPublicProvider, } from '@massalabs/massa-web3';
|
|
4
|
+
import { DEPLOYER_BYTECODE, formatNodeStatusObject, Mas, MAX_GAS_CALL, Operation, OperationStatus, SmartContract, StorageCost, strToBytes, bytesToStr, JsonRpcPublicProvider, populateDatastore, } from '@massalabs/massa-web3';
|
|
5
5
|
import { networkInfos } from './utils/network';
|
|
6
6
|
import { WalletName } from '../wallet';
|
|
7
7
|
import isEqual from 'lodash.isequal';
|
|
@@ -204,24 +204,35 @@ export class BearbyAccount {
|
|
|
204
204
|
const coins = params.coins ?? 0n;
|
|
205
205
|
const maxCoins = params.maxCoins ??
|
|
206
206
|
StorageCost.smartContractDeploy(params.byteCode.length) + coins;
|
|
207
|
+
const args = params.parameter ?? new Uint8Array();
|
|
208
|
+
const parameters = args instanceof Uint8Array ? args : args.serialize();
|
|
207
209
|
let maxGas = params.maxGas;
|
|
208
210
|
if (!maxGas) {
|
|
209
211
|
const client = await this.getClient();
|
|
212
|
+
const datastore = populateDatastore([
|
|
213
|
+
{
|
|
214
|
+
data: params.byteCode,
|
|
215
|
+
args: parameters,
|
|
216
|
+
coins,
|
|
217
|
+
},
|
|
218
|
+
]);
|
|
210
219
|
maxGas = await client.executeSCGasEstimation({
|
|
211
220
|
...params,
|
|
221
|
+
byteCode: DEPLOYER_BYTECODE,
|
|
222
|
+
datastore,
|
|
212
223
|
caller: this.address,
|
|
213
224
|
});
|
|
214
225
|
}
|
|
215
|
-
const
|
|
216
|
-
...params,
|
|
226
|
+
const bearbyParams = {
|
|
217
227
|
maxCoins,
|
|
218
228
|
maxGas,
|
|
219
229
|
coins,
|
|
220
230
|
fee,
|
|
221
231
|
contractDataBase64: uint8ArrayToBase64(params.byteCode),
|
|
222
232
|
deployerBase64: uint8ArrayToBase64(DEPLOYER_BYTECODE),
|
|
233
|
+
unsafeParameters: parameters,
|
|
223
234
|
};
|
|
224
|
-
const operationId = await web3.contract.deploy(
|
|
235
|
+
const operationId = await web3.contract.deploy(bearbyParams);
|
|
225
236
|
const operation = new Operation(this, operationId);
|
|
226
237
|
const deployedAddress = await operation.getDeployedAddress(params.waitFinalExecution);
|
|
227
238
|
return new SmartContract(this, deployedAddress);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BearbyAccount.js","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyAccount.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n EventFilterParam,\n web3,\n DatastoreEntryInputParam,\n JsonRPCResponse,\n ExecuteBytecodeParams,\n} from '@hicaru/bearby.js';\nimport { errorHandler } from '../errors/utils/errorHandler';\nimport { operationType } from '../utils/constants';\nimport {\n Address,\n CallSCParams,\n DEPLOYER_BYTECODE,\n DeploySCParams,\n EventFilter,\n formatNodeStatusObject,\n Mas,\n MAX_GAS_CALL,\n Network,\n NodeStatusInfo,\n Operation,\n OperationOptions,\n OperationStatus,\n Provider,\n ReadSCData,\n ReadSCParams,\n SignedData,\n SmartContract,\n StorageCost,\n strToBytes,\n bytesToStr,\n rpcTypes,\n JsonRpcPublicProvider,\n ExecuteScParams,\n} from '@massalabs/massa-web3';\nimport { networkInfos } from './utils/network';\nimport { WalletName } from '../wallet';\nimport isEqual from 'lodash.isequal';\nimport { uint8ArrayToBase64 } from '../utils/base64';\n\nlet jsonClient: JsonRpcPublicProvider;\n\nexport class BearbyAccount implements Provider {\n public constructor(public address: string) {}\n\n get accountName(): string {\n return this.address;\n }\n\n get providerName(): string {\n return WalletName.Bearby;\n }\n\n // public async connect() {\n // try {\n // await web3.wallet.connect();\n // } catch (ex) {\n // console.log('Bearby connection error: ', ex);\n // }\n // }\n\n private async getClient(): Promise<JsonRpcPublicProvider> {\n if (!jsonClient) {\n const network = await networkInfos();\n jsonClient = (\n network.name === 'mainnet'\n ? JsonRpcPublicProvider.mainnet()\n : JsonRpcPublicProvider.buildnet()\n ) as JsonRpcPublicProvider;\n }\n return jsonClient;\n }\n\n public async balance(final = false): Promise<bigint> {\n // // TODO: check if we need to connect every time\n // await this.connect();\n\n try {\n const res = await web3.massa.getAddresses(this.address);\n\n if (res.error || !res.result) {\n throw new Error(res.error?.message || 'Bearby getAddresses error');\n }\n\n const { final_balance, candidate_balance } = res.result[0];\n\n return Mas.fromString(final ? final_balance : candidate_balance);\n } catch (error) {\n const errorMessage = `An unexpected error occurred while fetching the account balance: ${error.message}.`;\n\n throw new Error(errorMessage);\n }\n }\n\n public async balanceOf(\n addresses: string[],\n final?: boolean,\n ): Promise<{ address: string; balance: bigint }[]> {\n const res = await web3.massa.getAddresses(...addresses);\n if (res.error || !res.result) {\n throw new Error(res.error?.message || 'Bearby getAddresses error');\n }\n\n return res.result.map((addressInfo) => {\n const { final_balance, candidate_balance } = addressInfo;\n return {\n address: addressInfo.address,\n balance: Mas.fromString(final ? final_balance : candidate_balance),\n };\n });\n }\n\n public async networkInfos(): Promise<Network> {\n return networkInfos();\n }\n\n public async sign(data: Uint8Array | string): Promise<SignedData> {\n // await this.connect();\n\n if (data instanceof Uint8Array) {\n data = bytesToStr(data);\n }\n\n try {\n const signature = await web3.wallet.signMessage(data);\n\n return {\n publicKey: signature.publicKey,\n signature: signature.signature,\n };\n } catch (error) {\n throw errorHandler(operationType.Sign, error);\n }\n }\n\n public async buyRolls(\n amount: bigint,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _opts?: OperationOptions,\n ): Promise<Operation> {\n // await this.connect();\n try {\n const operationId = await web3.massa.buyRolls(amount.toString());\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.BuyRolls, error);\n }\n }\n\n public async sellRolls(\n amount: bigint,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _opts?: OperationOptions,\n ): Promise<Operation> {\n // await this.connect();\n try {\n const operationId = await web3.massa.sellRolls(amount.toString());\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.SellRolls, error);\n }\n }\n\n public async transfer(\n to: Address | string,\n amount: bigint,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _opts?: OperationOptions,\n ): Promise<Operation> {\n // await this.connect();\n\n try {\n const operationId = await web3.massa.payment(\n amount.toString(),\n to.toString(),\n );\n\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.SendTransaction, error);\n }\n }\n\n private async minimalFee(): Promise<bigint> {\n const { minimalFee } = await this.networkInfos();\n return minimalFee;\n }\n\n public async callSC(params: CallSCParams): Promise<Operation> {\n // await this.connect();\n\n const args = params.parameter ?? new Uint8Array();\n const unsafeParameters =\n args instanceof Uint8Array ? args : Uint8Array.from(args.serialize());\n\n const fee = params.fee ?? (await this.minimalFee());\n\n let maxGas = params.maxGas;\n if (!maxGas) {\n const client = await this.getClient();\n maxGas = await client.getGasEstimation({\n ...params,\n caller: this.address,\n });\n }\n\n try {\n const operationId = await web3.contract.call({\n // TODO: add bigint support in bearby.js\n maxGas: Number(maxGas),\n coins: Number(params.coins || 0),\n fee: Number(fee),\n targetAddress: params.target,\n functionName: params.func,\n unsafeParameters,\n });\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.CallSC, error);\n }\n }\n\n public async readSC(params: ReadSCParams): Promise<ReadSCData> {\n if (params.maxGas && params.maxGas > MAX_GAS_CALL) {\n throw new Error(\n `Gas amount ${params.maxGas} exceeds the maximum allowed ${MAX_GAS_CALL}.`,\n );\n }\n\n const args = params.parameter ?? new Uint8Array();\n const unsafeParameters =\n args instanceof Uint8Array ? args : Uint8Array.from(args.serialize());\n\n const fee = params?.fee ?? (await this.minimalFee());\n const caller = params.caller ?? this.address;\n\n try {\n // const res = await web3.contract.readSmartContract({\n // // TODO: add bigint support in bearby.js\n // maxGas: Number(params.maxGas),\n // coins: Number(params.coins),\n // fee: Number(fee),\n // targetAddress: params.target,\n // targetFunction: params.func,\n // // TODO: add unsafeParameters to bearby.js\n // // https://github.com/bearby-wallet/bearby-web3/pull/18\n // parameter: unsafeParameters as any,\n // });\n\n // console.log('bearby readSC res', res[0]);\n // const data = res[0].result[0];\n\n // return {\n // value: data.result.Ok ? Uint8Array.from(data.result.Ok): new Uint8Array(),\n // info: {\n // error: data.result.Error,\n // events: data.output_events.map((event: SCEvent) => ({\n // data: event.data,\n // context: event.context,\n // })),\n // gasCost: data.gas_cost,\n // },\n // };\n\n // Temp implementation to remove when bearby.js is fixed\n const client = await this.getClient();\n const readOnlyParams = {\n ...params,\n caller,\n fee,\n parameter: unsafeParameters,\n };\n return client.readSC(readOnlyParams);\n } catch (error) {\n throw new Error(\n `An error occurred while reading the smart contract: ${error.message}`,\n );\n }\n }\n\n public async deploySC(params: DeploySCParams): Promise<SmartContract> {\n try {\n const fee = Number(params.fee ?? (await this.minimalFee()));\n const coins = params.coins ?? 0n;\n const maxCoins =\n params.maxCoins ??\n StorageCost.smartContractDeploy(params.byteCode.length) + coins;\n\n let maxGas = params.maxGas;\n if (!maxGas) {\n const client = await this.getClient();\n maxGas = await client.executeSCGasEstimation({\n ...params,\n caller: this.address,\n });\n }\n\n const args = {\n ...params,\n maxCoins,\n maxGas,\n coins,\n fee,\n contractDataBase64: uint8ArrayToBase64(params.byteCode),\n deployerBase64: uint8ArrayToBase64(DEPLOYER_BYTECODE),\n };\n\n const operationId = await web3.contract.deploy(args);\n\n const operation = new Operation(this, operationId);\n\n const deployedAddress = await operation.getDeployedAddress(\n params.waitFinalExecution,\n );\n\n return new SmartContract(this, deployedAddress);\n } catch (error) {\n console.error('Error deploying smart contract:', error);\n throw new Error(`Failed to deploy smart contract: ${error.message}`);\n }\n }\n\n public async executeSC(params: ExecuteScParams): Promise<Operation> {\n const fee = params.fee ?? (await this.minimalFee());\n let maxGas = params.maxGas;\n if (!maxGas) {\n const client = await this.getClient();\n maxGas = await client.executeSCGasEstimation({\n ...params,\n caller: this.address,\n });\n }\n\n const args: ExecuteBytecodeParams = {\n maxCoins: params.maxCoins ?? 0n,\n maxGas,\n fee,\n bytecodeBase64: uint8ArrayToBase64(params.byteCode),\n datastore: params.datastore ?? new Map<Uint8Array, Uint8Array>(),\n };\n\n const operationId = await web3.contract.executeBytecode(args);\n\n return new Operation(this, operationId);\n }\n\n public async getOperationStatus(opId: string): Promise<OperationStatus> {\n try {\n const res = await web3.massa.getOperations(opId);\n\n if (res.error || !res.result) {\n throw new Error(res.error?.message || 'Bearby getOperations error');\n }\n const op = res.result[0];\n if (op.op_exec_status === null) {\n if (op.is_operation_final === null) {\n return OperationStatus.NotFound;\n }\n throw new Error('unexpected status');\n }\n\n if (op.in_pool) {\n return OperationStatus.PendingInclusion;\n }\n\n if (!op.is_operation_final) {\n return op.op_exec_status\n ? OperationStatus.SpeculativeSuccess\n : OperationStatus.SpeculativeError;\n }\n\n return op.op_exec_status\n ? OperationStatus.Success\n : OperationStatus.Error;\n } catch (error) {\n throw new Error(\n `An error occurred while fetching the operation status: ${error.message}`,\n );\n }\n }\n\n public async getEvents(filter: EventFilter): Promise<rpcTypes.OutputEvents> {\n const formattedFilter: EventFilterParam = {\n start: filter.start,\n end: filter.end,\n emitter_address: filter.smartContractAddress,\n original_caller_address: filter.callerAddress,\n original_operation_id: filter.operationId,\n is_final: filter.isFinal,\n is_error: filter.isError,\n };\n\n try {\n /* \n Currently getFilteredSCOutputEvent is supposed to return a JsonRPCResponseFilteredSCOutputEvent object.\n But in practice it's returning an array of JsonRPCResponse<rpcTypes.OutputEvents> objects.\n */\n const res = (await web3.contract.getFilteredSCOutputEvent(\n formattedFilter,\n )) as JsonRPCResponse<rpcTypes.OutputEvents>[];\n\n if (res?.[0]?.error) throw res[0].error;\n return res?.[0]?.result ?? [];\n } catch (error) {\n throw new Error(\n `An error occurred while fetching the operation status: ${error.message}`,\n );\n }\n }\n\n public async getNodeStatus(): Promise<NodeStatusInfo> {\n const status = await web3.massa.getNodesStatus();\n if (status.error || !status.result) {\n throw new Error(status.error?.message || 'Bearby getNodeStatus error');\n }\n return formatNodeStatusObject(status.result);\n }\n\n public async getStorageKeys(\n address: string,\n filter: Uint8Array | string = new Uint8Array(),\n final = true,\n ): Promise<Uint8Array[]> {\n const res = await web3.massa.getAddresses(address);\n if (res.error || !res.result) {\n throw new Error(res.error?.message || 'Bearby getStorageKeys error');\n }\n\n const addressInfo = res.result[0];\n const keys = final\n ? addressInfo.final_datastore_keys\n : addressInfo.candidate_datastore_keys;\n\n const filterBytes: Uint8Array =\n typeof filter === 'string' ? strToBytes(filter) : filter;\n\n return keys\n .filter(\n (key) =>\n !filter.length ||\n isEqual(\n Uint8Array.from(key.slice(0, filterBytes.length)),\n filterBytes,\n ),\n )\n .map((d) => Uint8Array.from(d));\n }\n\n public async readStorage(\n address: string,\n keys: Uint8Array[] | string[],\n final = true,\n ): Promise<Uint8Array[]> {\n try {\n const input: DatastoreEntryInputParam[] = keys.map((key) => ({\n key,\n address,\n }));\n const data = await web3.contract.getDatastoreEntries(...input);\n const resultArray = data[0]['result'];\n const dataArray = final\n ? resultArray.map((d) => Uint8Array.from(d.final_value))\n : resultArray.map((d) => Uint8Array.from(d.candidate_value));\n return dataArray;\n } catch (error) {\n throw new Error(\n `An error occurred while reading the storage: ${error.message}`,\n );\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BearbyAccount.js","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyAccount.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n EventFilterParam,\n web3,\n DatastoreEntryInputParam,\n JsonRPCResponse,\n ExecuteBytecodeParams,\n} from '@hicaru/bearby.js';\nimport { errorHandler } from '../errors/utils/errorHandler';\nimport { operationType } from '../utils/constants';\nimport {\n Address,\n CallSCParams,\n DEPLOYER_BYTECODE,\n DeploySCParams,\n EventFilter,\n formatNodeStatusObject,\n Mas,\n MAX_GAS_CALL,\n Network,\n NodeStatusInfo,\n Operation,\n OperationOptions,\n OperationStatus,\n Provider,\n ReadSCData,\n ReadSCParams,\n SignedData,\n SmartContract,\n StorageCost,\n strToBytes,\n bytesToStr,\n rpcTypes,\n JsonRpcPublicProvider,\n ExecuteScParams,\n populateDatastore,\n} from '@massalabs/massa-web3';\nimport { networkInfos } from './utils/network';\nimport { WalletName } from '../wallet';\nimport isEqual from 'lodash.isequal';\nimport { uint8ArrayToBase64 } from '../utils/base64';\n\nlet jsonClient: JsonRpcPublicProvider;\n\nexport class BearbyAccount implements Provider {\n public constructor(public address: string) {}\n\n get accountName(): string {\n return this.address;\n }\n\n get providerName(): string {\n return WalletName.Bearby;\n }\n\n // public async connect() {\n // try {\n // await web3.wallet.connect();\n // } catch (ex) {\n // console.log('Bearby connection error: ', ex);\n // }\n // }\n\n private async getClient(): Promise<JsonRpcPublicProvider> {\n if (!jsonClient) {\n const network = await networkInfos();\n jsonClient = (\n network.name === 'mainnet'\n ? JsonRpcPublicProvider.mainnet()\n : JsonRpcPublicProvider.buildnet()\n ) as JsonRpcPublicProvider;\n }\n return jsonClient;\n }\n\n public async balance(final = false): Promise<bigint> {\n // // TODO: check if we need to connect every time\n // await this.connect();\n\n try {\n const res = await web3.massa.getAddresses(this.address);\n\n if (res.error || !res.result) {\n throw new Error(res.error?.message || 'Bearby getAddresses error');\n }\n\n const { final_balance, candidate_balance } = res.result[0];\n\n return Mas.fromString(final ? final_balance : candidate_balance);\n } catch (error) {\n const errorMessage = `An unexpected error occurred while fetching the account balance: ${error.message}.`;\n\n throw new Error(errorMessage);\n }\n }\n\n public async balanceOf(\n addresses: string[],\n final?: boolean,\n ): Promise<{ address: string; balance: bigint }[]> {\n const res = await web3.massa.getAddresses(...addresses);\n if (res.error || !res.result) {\n throw new Error(res.error?.message || 'Bearby getAddresses error');\n }\n\n return res.result.map((addressInfo) => {\n const { final_balance, candidate_balance } = addressInfo;\n return {\n address: addressInfo.address,\n balance: Mas.fromString(final ? final_balance : candidate_balance),\n };\n });\n }\n\n public async networkInfos(): Promise<Network> {\n return networkInfos();\n }\n\n public async sign(data: Uint8Array | string): Promise<SignedData> {\n // await this.connect();\n\n if (data instanceof Uint8Array) {\n data = bytesToStr(data);\n }\n\n try {\n const signature = await web3.wallet.signMessage(data);\n\n return {\n publicKey: signature.publicKey,\n signature: signature.signature,\n };\n } catch (error) {\n throw errorHandler(operationType.Sign, error);\n }\n }\n\n public async buyRolls(\n amount: bigint,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _opts?: OperationOptions,\n ): Promise<Operation> {\n // await this.connect();\n try {\n const operationId = await web3.massa.buyRolls(amount.toString());\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.BuyRolls, error);\n }\n }\n\n public async sellRolls(\n amount: bigint,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _opts?: OperationOptions,\n ): Promise<Operation> {\n // await this.connect();\n try {\n const operationId = await web3.massa.sellRolls(amount.toString());\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.SellRolls, error);\n }\n }\n\n public async transfer(\n to: Address | string,\n amount: bigint,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _opts?: OperationOptions,\n ): Promise<Operation> {\n // await this.connect();\n\n try {\n const operationId = await web3.massa.payment(\n amount.toString(),\n to.toString(),\n );\n\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.SendTransaction, error);\n }\n }\n\n private async minimalFee(): Promise<bigint> {\n const { minimalFee } = await this.networkInfos();\n return minimalFee;\n }\n\n public async callSC(params: CallSCParams): Promise<Operation> {\n // await this.connect();\n\n const args = params.parameter ?? new Uint8Array();\n const unsafeParameters =\n args instanceof Uint8Array ? args : Uint8Array.from(args.serialize());\n\n const fee = params.fee ?? (await this.minimalFee());\n\n let maxGas = params.maxGas;\n if (!maxGas) {\n const client = await this.getClient();\n maxGas = await client.getGasEstimation({\n ...params,\n caller: this.address,\n });\n }\n\n try {\n const operationId = await web3.contract.call({\n // TODO: add bigint support in bearby.js\n maxGas: Number(maxGas),\n coins: Number(params.coins || 0),\n fee: Number(fee),\n targetAddress: params.target,\n functionName: params.func,\n unsafeParameters,\n });\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.CallSC, error);\n }\n }\n\n public async readSC(params: ReadSCParams): Promise<ReadSCData> {\n if (params.maxGas && params.maxGas > MAX_GAS_CALL) {\n throw new Error(\n `Gas amount ${params.maxGas} exceeds the maximum allowed ${MAX_GAS_CALL}.`,\n );\n }\n\n const args = params.parameter ?? new Uint8Array();\n const unsafeParameters =\n args instanceof Uint8Array ? args : Uint8Array.from(args.serialize());\n\n const fee = params?.fee ?? (await this.minimalFee());\n const caller = params.caller ?? this.address;\n\n try {\n // const res = await web3.contract.readSmartContract({\n // // TODO: add bigint support in bearby.js\n // maxGas: Number(params.maxGas),\n // coins: Number(params.coins),\n // fee: Number(fee),\n // targetAddress: params.target,\n // targetFunction: params.func,\n // // TODO: add unsafeParameters to bearby.js\n // // https://github.com/bearby-wallet/bearby-web3/pull/18\n // parameter: unsafeParameters as any,\n // });\n\n // console.log('bearby readSC res', res[0]);\n // const data = res[0].result[0];\n\n // return {\n // value: data.result.Ok ? Uint8Array.from(data.result.Ok): new Uint8Array(),\n // info: {\n // error: data.result.Error,\n // events: data.output_events.map((event: SCEvent) => ({\n // data: event.data,\n // context: event.context,\n // })),\n // gasCost: data.gas_cost,\n // },\n // };\n\n // Temp implementation to remove when bearby.js is fixed\n const client = await this.getClient();\n const readOnlyParams = {\n ...params,\n caller,\n fee,\n parameter: unsafeParameters,\n };\n return client.readSC(readOnlyParams);\n } catch (error) {\n throw new Error(\n `An error occurred while reading the smart contract: ${error.message}`,\n );\n }\n }\n\n public async deploySC(params: DeploySCParams): Promise<SmartContract> {\n try {\n const fee = Number(params.fee ?? (await this.minimalFee()));\n const coins = params.coins ?? 0n;\n const maxCoins =\n params.maxCoins ??\n StorageCost.smartContractDeploy(params.byteCode.length) + coins;\n\n const args = params.parameter ?? new Uint8Array();\n const parameters = args instanceof Uint8Array ? args : args.serialize();\n\n let maxGas = params.maxGas;\n if (!maxGas) {\n const client = await this.getClient();\n\n const datastore = populateDatastore([\n {\n data: params.byteCode,\n args: parameters,\n coins,\n },\n ]);\n\n maxGas = await client.executeSCGasEstimation({\n ...params,\n byteCode: DEPLOYER_BYTECODE,\n datastore,\n caller: this.address,\n });\n }\n\n const bearbyParams = {\n maxCoins,\n maxGas,\n coins,\n fee,\n contractDataBase64: uint8ArrayToBase64(params.byteCode),\n deployerBase64: uint8ArrayToBase64(DEPLOYER_BYTECODE),\n unsafeParameters: parameters,\n };\n\n const operationId = await web3.contract.deploy(bearbyParams);\n\n const operation = new Operation(this, operationId);\n\n const deployedAddress = await operation.getDeployedAddress(\n params.waitFinalExecution,\n );\n\n return new SmartContract(this, deployedAddress);\n } catch (error) {\n console.error('Error deploying smart contract:', error);\n throw new Error(`Failed to deploy smart contract: ${error.message}`);\n }\n }\n\n public async executeSC(params: ExecuteScParams): Promise<Operation> {\n const fee = params.fee ?? (await this.minimalFee());\n let maxGas = params.maxGas;\n if (!maxGas) {\n const client = await this.getClient();\n maxGas = await client.executeSCGasEstimation({\n ...params,\n caller: this.address,\n });\n }\n\n const args: ExecuteBytecodeParams = {\n maxCoins: params.maxCoins ?? 0n,\n maxGas,\n fee,\n bytecodeBase64: uint8ArrayToBase64(params.byteCode),\n datastore: params.datastore ?? new Map<Uint8Array, Uint8Array>(),\n };\n\n const operationId = await web3.contract.executeBytecode(args);\n\n return new Operation(this, operationId);\n }\n\n public async getOperationStatus(opId: string): Promise<OperationStatus> {\n try {\n const res = await web3.massa.getOperations(opId);\n\n if (res.error || !res.result) {\n throw new Error(res.error?.message || 'Bearby getOperations error');\n }\n const op = res.result[0];\n if (op.op_exec_status === null) {\n if (op.is_operation_final === null) {\n return OperationStatus.NotFound;\n }\n throw new Error('unexpected status');\n }\n\n if (op.in_pool) {\n return OperationStatus.PendingInclusion;\n }\n\n if (!op.is_operation_final) {\n return op.op_exec_status\n ? OperationStatus.SpeculativeSuccess\n : OperationStatus.SpeculativeError;\n }\n\n return op.op_exec_status\n ? OperationStatus.Success\n : OperationStatus.Error;\n } catch (error) {\n throw new Error(\n `An error occurred while fetching the operation status: ${error.message}`,\n );\n }\n }\n\n public async getEvents(filter: EventFilter): Promise<rpcTypes.OutputEvents> {\n const formattedFilter: EventFilterParam = {\n start: filter.start,\n end: filter.end,\n emitter_address: filter.smartContractAddress,\n original_caller_address: filter.callerAddress,\n original_operation_id: filter.operationId,\n is_final: filter.isFinal,\n is_error: filter.isError,\n };\n\n try {\n /* \n Currently getFilteredSCOutputEvent is supposed to return a JsonRPCResponseFilteredSCOutputEvent object.\n But in practice it's returning an array of JsonRPCResponse<rpcTypes.OutputEvents> objects.\n */\n const res = (await web3.contract.getFilteredSCOutputEvent(\n formattedFilter,\n )) as JsonRPCResponse<rpcTypes.OutputEvents>[];\n\n if (res?.[0]?.error) throw res[0].error;\n return res?.[0]?.result ?? [];\n } catch (error) {\n throw new Error(\n `An error occurred while fetching the operation status: ${error.message}`,\n );\n }\n }\n\n public async getNodeStatus(): Promise<NodeStatusInfo> {\n const status = await web3.massa.getNodesStatus();\n if (status.error || !status.result) {\n throw new Error(status.error?.message || 'Bearby getNodeStatus error');\n }\n return formatNodeStatusObject(status.result);\n }\n\n public async getStorageKeys(\n address: string,\n filter: Uint8Array | string = new Uint8Array(),\n final = true,\n ): Promise<Uint8Array[]> {\n const res = await web3.massa.getAddresses(address);\n if (res.error || !res.result) {\n throw new Error(res.error?.message || 'Bearby getStorageKeys error');\n }\n\n const addressInfo = res.result[0];\n const keys = final\n ? addressInfo.final_datastore_keys\n : addressInfo.candidate_datastore_keys;\n\n const filterBytes: Uint8Array =\n typeof filter === 'string' ? strToBytes(filter) : filter;\n\n return keys\n .filter(\n (key) =>\n !filter.length ||\n isEqual(\n Uint8Array.from(key.slice(0, filterBytes.length)),\n filterBytes,\n ),\n )\n .map((d) => Uint8Array.from(d));\n }\n\n public async readStorage(\n address: string,\n keys: Uint8Array[] | string[],\n final = true,\n ): Promise<Uint8Array[]> {\n try {\n const input: DatastoreEntryInputParam[] = keys.map((key) => ({\n key,\n address,\n }));\n const data = await web3.contract.getDatastoreEntries(...input);\n const resultArray = data[0]['result'];\n const dataArray = final\n ? resultArray.map((d) => Uint8Array.from(d.final_value))\n : resultArray.map((d) => Uint8Array.from(d.candidate_value));\n return dataArray;\n } catch (error) {\n throw new Error(\n `An error occurred while reading the storage: ${error.message}`,\n );\n }\n }\n}\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MSDeploySCParams, MSExecuteScParams } from './types';
|
|
2
|
+
import { Address, CallSCParams, EventFilter, Network, NodeStatusInfo, Operation, OperationOptions, OperationStatus, Provider, ReadSCData, ReadSCParams, SignedData, SignOptions, SmartContract, rpcTypes } from '@massalabs/massa-web3';
|
|
2
3
|
/**
|
|
3
4
|
* This module contains the MassaStationAccount class. It is responsible for representing an account in
|
|
4
5
|
* the MassaStation wallet.
|
|
@@ -27,8 +28,8 @@ export declare class MassaStationAccount implements Provider {
|
|
|
27
28
|
callSC(params: CallSCParams): Promise<Operation>;
|
|
28
29
|
networkInfos(): Promise<Network>;
|
|
29
30
|
readSC(params: ReadSCParams): Promise<ReadSCData>;
|
|
30
|
-
deploySC(params:
|
|
31
|
-
executeSC(): Promise<Operation>;
|
|
31
|
+
deploySC(params: MSDeploySCParams): Promise<SmartContract>;
|
|
32
|
+
executeSC(params: MSExecuteScParams): Promise<Operation>;
|
|
32
33
|
getOperationStatus(opId: string): Promise<OperationStatus>;
|
|
33
34
|
getEvents(filter: EventFilter): Promise<rpcTypes.OutputEvents>;
|
|
34
35
|
getNodeStatus(): Promise<NodeStatusInfo>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MassaStationAccount.d.ts","sourceRoot":"","sources":["../../../src/massaStation/MassaStationAccount.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MassaStationAccount.d.ts","sourceRoot":"","sources":["../../../src/massaStation/MassaStationAccount.ts"],"names":[],"mappings":"AAOA,OAAO,EAOL,gBAAgB,EAChB,iBAAiB,EAElB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,OAAO,EACP,YAAY,EACZ,WAAW,EAGX,OAAO,EACP,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,aAAa,EACb,QAAQ,EAKT,MAAM,uBAAuB,CAAC;AAK/B;;;;;;;GAOG;AACH,qBAAa,mBAAoB,YAAW,QAAQ;IAIzC,OAAO,EAAE,MAAM;IACf,WAAW,EAAE,MAAM;IAJ5B,OAAO,CAAC,aAAa,CAA0B;gBAGtC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM;IAG5B,IAAI,YAAY,IAAI,MAAM,CAEzB;IAEY,OAAO,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAU9C,SAAS,CACb,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,UAAQ,GACZ,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAsBrC,IAAI,CACf,IAAI,EAAE,UAAU,GAAG,MAAM,EACzB,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,UAAU,CAAC;YA2BR,UAAU;YAMV,aAAa;IAwBd,QAAQ,CACnB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,SAAS,CAAC;IAIR,SAAS,CACpB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,SAAS,CAAC;IAIf,QAAQ,CACZ,EAAE,EAAE,OAAO,GAAG,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,SAAS,CAAC;IAqBR,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAqChD,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IA2BjD,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAgEjE,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;IA+CjD,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAM1D,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAM9D,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC;IAKxC,cAAc,CACzB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,UAAU,GAAG,MAAyB,EAC9C,KAAK,UAAO,GACX,OAAO,CAAC,UAAU,EAAE,CAAC;IAMX,WAAW,CACtB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,EAC7B,KAAK,UAAO,GACX,OAAO,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;CAKlC"}
|
|
@@ -3,7 +3,7 @@ import { walletApiUrl, MASSA_STATION_URL } from './MassaStationWallet';
|
|
|
3
3
|
import { argsToBase64, base64ToByteArray, uint8ArrayToBase64, } from '../utils/base64';
|
|
4
4
|
import { errorHandler } from '../errors/utils/errorHandler';
|
|
5
5
|
import { operationType } from '../utils/constants';
|
|
6
|
-
import {
|
|
6
|
+
import { Mas, MAX_GAS_CALL, Operation, SmartContract, StorageCost, formatMas, DEPLOYER_BYTECODE, populateDatastore, } from '@massalabs/massa-web3';
|
|
7
7
|
import { getClient, networkInfos } from './utils/network';
|
|
8
8
|
import { WalletName } from '../wallet';
|
|
9
9
|
import bs58check from 'bs58check';
|
|
@@ -67,7 +67,8 @@ export class MassaStationAccount {
|
|
|
67
67
|
}
|
|
68
68
|
async minimalFee() {
|
|
69
69
|
const client = await getClient();
|
|
70
|
-
|
|
70
|
+
const { minimalFee } = await client.networkInfos();
|
|
71
|
+
return minimalFee;
|
|
71
72
|
}
|
|
72
73
|
async rollOperation(type, amount, opts) {
|
|
73
74
|
let fee = opts?.fee ?? (await this.minimalFee());
|
|
@@ -158,7 +159,7 @@ export class MassaStationAccount {
|
|
|
158
159
|
parameter: args instanceof Uint8Array ? args : Uint8Array.from(args.serialize()),
|
|
159
160
|
};
|
|
160
161
|
// This implementation is wrong. We should use massaStation instead of targeting the node directly.
|
|
161
|
-
return client.
|
|
162
|
+
return client.readSC(readOnlyParams);
|
|
162
163
|
}
|
|
163
164
|
async deploySC(params) {
|
|
164
165
|
try {
|
|
@@ -167,15 +168,35 @@ export class MassaStationAccount {
|
|
|
167
168
|
const coins = params.coins ?? 0n; // If coins is undefined, some vesions of station will have a panic
|
|
168
169
|
const maxCoins = params.maxCoins ??
|
|
169
170
|
StorageCost.smartContractDeploy(params.byteCode.length) + coins;
|
|
170
|
-
const fee = params.fee
|
|
171
|
+
const fee = params.fee ?? (await this.minimalFee());
|
|
172
|
+
let maxGas = params.maxGas;
|
|
173
|
+
if (!maxGas) {
|
|
174
|
+
const client = await getClient();
|
|
175
|
+
const datastore = populateDatastore([
|
|
176
|
+
{
|
|
177
|
+
data: params.byteCode,
|
|
178
|
+
args: parameters,
|
|
179
|
+
coins,
|
|
180
|
+
},
|
|
181
|
+
]);
|
|
182
|
+
maxGas = await client.executeSCGasEstimation({
|
|
183
|
+
...params,
|
|
184
|
+
byteCode: DEPLOYER_BYTECODE,
|
|
185
|
+
datastore,
|
|
186
|
+
caller: this.address,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
const description = params.description ??
|
|
190
|
+
`${formatMas(coins)} MAS coins allocated to new smart contract`;
|
|
171
191
|
const body = {
|
|
172
192
|
nickname: this.accountName,
|
|
173
193
|
smartContract: uint8ArrayToBase64(params.byteCode),
|
|
174
|
-
maxCoins: maxCoins.toString(),
|
|
175
194
|
coins: coins.toString(),
|
|
176
|
-
fee: fee.toString(),
|
|
177
195
|
parameters: uint8ArrayToBase64(parameters),
|
|
178
|
-
|
|
196
|
+
maxCoins: maxCoins.toString(),
|
|
197
|
+
fee: fee.toString(),
|
|
198
|
+
maxGas: maxGas.toString(),
|
|
199
|
+
description,
|
|
179
200
|
};
|
|
180
201
|
const { result } = await postRequest(`${MASSA_STATION_URL}cmd/deploySC`, body);
|
|
181
202
|
const operationId = result?.operationId;
|
|
@@ -189,8 +210,41 @@ export class MassaStationAccount {
|
|
|
189
210
|
throw new Error(`Error during smart contract deployment: ${error}`);
|
|
190
211
|
}
|
|
191
212
|
}
|
|
192
|
-
executeSC() {
|
|
193
|
-
|
|
213
|
+
async executeSC(params) {
|
|
214
|
+
try {
|
|
215
|
+
const fee = params.fee ?? (await this.minimalFee());
|
|
216
|
+
const maxCoins = params.maxCoins ?? 0n;
|
|
217
|
+
let maxGas = params.maxGas;
|
|
218
|
+
if (!maxGas) {
|
|
219
|
+
const client = await getClient();
|
|
220
|
+
maxGas = await client.executeSCGasEstimation({
|
|
221
|
+
...params,
|
|
222
|
+
caller: this.address,
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
const datastore = [];
|
|
226
|
+
if (params.datastore) {
|
|
227
|
+
for (const [key, value] of params.datastore.entries()) {
|
|
228
|
+
datastore.push([uint8ArrayToBase64(key), uint8ArrayToBase64(value)]);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
const body = {
|
|
232
|
+
nickname: this.accountName,
|
|
233
|
+
bytecode: uint8ArrayToBase64(params.byteCode),
|
|
234
|
+
datastore,
|
|
235
|
+
maxCoins: maxCoins.toString(),
|
|
236
|
+
fee: fee.toString(),
|
|
237
|
+
description: params.description ?? '',
|
|
238
|
+
};
|
|
239
|
+
const { result } = await postRequest(`${MASSA_STATION_URL}cmd/executeSC`, body);
|
|
240
|
+
const operationId = result?.operationId;
|
|
241
|
+
if (!operationId)
|
|
242
|
+
throw new Error('Operation ID not found');
|
|
243
|
+
return new Operation(this, operationId);
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
throw new Error(`Error during smart contract bytecode execution: ${error}`);
|
|
247
|
+
}
|
|
194
248
|
}
|
|
195
249
|
async getOperationStatus(opId) {
|
|
196
250
|
const client = await getClient();
|
|
@@ -204,23 +258,17 @@ export class MassaStationAccount {
|
|
|
204
258
|
}
|
|
205
259
|
async getNodeStatus() {
|
|
206
260
|
const client = await getClient();
|
|
207
|
-
|
|
208
|
-
return formatNodeStatusObject(status);
|
|
261
|
+
return client.getNodeStatus();
|
|
209
262
|
}
|
|
210
263
|
async getStorageKeys(address, filter = new Uint8Array(), final = true) {
|
|
211
264
|
// This implementation is wrong. We should use massaStation instead of targeting the node directly.
|
|
212
265
|
const client = await getClient();
|
|
213
|
-
|
|
214
|
-
return client.getDataStoreKeys(address, filterBytes, final);
|
|
266
|
+
return client.getStorageKeys(address, filter, final);
|
|
215
267
|
}
|
|
216
268
|
async readStorage(address, keys, final = true) {
|
|
217
269
|
// This implementation is wrong. We should use massaStation instead of targeting the node directly.
|
|
218
270
|
const client = await getClient();
|
|
219
|
-
|
|
220
|
-
key,
|
|
221
|
-
address,
|
|
222
|
-
}));
|
|
223
|
-
return client.getDatastoreEntries(entries, final);
|
|
271
|
+
return client.readStorage(address, keys, final);
|
|
224
272
|
}
|
|
225
273
|
}
|
|
226
274
|
//# sourceMappingURL=MassaStationAccount.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MassaStationAccount.js","sourceRoot":"","sources":["../../../src/massaStation/MassaStationAccount.ts"],"names":[],"mappings":"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","sourcesContent":["import { getRequest, postRequest } from './RequestHandler';\nimport { walletApiUrl, MASSA_STATION_URL } from './MassaStationWallet';\nimport {\n argsToBase64,\n base64ToByteArray,\n uint8ArrayToBase64,\n} from '../utils/base64';\nimport {\n DeploySCFunctionBody,\n ExecuteFunctionBody,\n MSAccountSignPayload,\n MSAccountSignResp,\n MSBalancesResp,\n MSSendOperationResp,\n} from './types';\nimport { errorHandler } from '../errors/utils/errorHandler';\nimport { operationType } from '../utils/constants';\nimport {\n Address,\n CallSCParams,\n DatastoreEntry,\n DeploySCParams,\n EventFilter,\n formatNodeStatusObject,\n Mas,\n MAX_GAS_CALL,\n Network,\n NodeStatusInfo,\n Operation,\n OperationOptions,\n OperationStatus,\n Provider,\n ReadSCData,\n ReadSCParams,\n SignedData,\n SignOptions,\n SmartContract,\n strToBytes,\n rpcTypes,\n StorageCost,\n formatMas,\n} from '@massalabs/massa-web3';\nimport { getClient, networkInfos } from './utils/network';\nimport { WalletName } from '../wallet';\nimport bs58check from 'bs58check';\n\n/**\n * This module contains the MassaStationAccount class. It is responsible for representing an account in\n * the MassaStation wallet.\n *\n * @remarks\n * This class provides methods to interact with MassaStation account's {@link balance} and to {@link sign} messages.\n *\n */\nexport class MassaStationAccount implements Provider {\n private _providerName = WalletName.MassaWallet;\n\n constructor(\n public address: string,\n public accountName: string,\n ) {}\n\n get providerName(): string {\n return this._providerName;\n }\n\n public async balance(final = false): Promise<bigint> {\n const { result } = await getRequest<MSBalancesResp>(\n `${MASSA_STATION_URL}massa/addresses?attributes=balance&addresses=${this.address}`,\n );\n\n const balances = result.addressesAttributes[this.address].balance;\n\n return Mas.fromString(final ? balances.final : balances.pending);\n }\n\n async balanceOf(\n addresses: string[],\n final = false,\n ): Promise<{ address: string; balance: bigint }[]> {\n const queryParams = new URLSearchParams();\n\n queryParams.append('attributes', 'balance');\n addresses.forEach((address) => {\n queryParams.append('addresses', address);\n });\n\n const { result } = await getRequest<MSBalancesResp>(\n `${MASSA_STATION_URL}massa/addresses?${queryParams.toString()}`,\n );\n\n return addresses.map((address) => {\n const balance = result.addressesAttributes[address].balance;\n\n return {\n address,\n balance: Mas.fromString(final ? balance.final : balance.pending),\n };\n });\n }\n\n public async sign(\n data: Uint8Array | string,\n opts?: SignOptions,\n ): Promise<SignedData> {\n const signData: MSAccountSignPayload = {\n description: opts?.description ?? '',\n message: typeof data === 'string' ? data : new TextDecoder().decode(data),\n DisplayData: opts?.displayData ?? true,\n };\n\n try {\n const { result } = await postRequest<MSAccountSignResp>(\n `${walletApiUrl()}/accounts/${this.accountName}/signMessage`,\n signData,\n );\n\n // MS Wallet encodes signature in base64... so we need to decode it en re-encode it in base58\n const signature = bs58check.encode(\n await base64ToByteArray(result.signature),\n );\n\n return {\n publicKey: result.publicKey,\n signature,\n };\n } catch (error) {\n throw errorHandler(operationType.Sign, error);\n }\n }\n\n private async minimalFee(): Promise<bigint> {\n const client = await getClient();\n return client.getMinimalFee();\n }\n\n private async rollOperation(\n type: operationType.BuyRolls | operationType.SellRolls,\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n let fee = opts?.fee ?? (await this.minimalFee());\n\n const body = {\n fee: fee.toString(),\n amount: amount.toString(),\n side: type === operationType.BuyRolls ? 'buy' : 'sell',\n };\n try {\n const { result } = await postRequest<MSSendOperationResp>(\n `${walletApiUrl()}/accounts/${this.accountName}/rolls`,\n body,\n );\n\n return new Operation(this, result.operationId);\n } catch (error) {\n throw errorHandler(type, error);\n }\n }\n\n public async buyRolls(\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n return this.rollOperation(operationType.BuyRolls, amount, opts);\n }\n\n public async sellRolls(\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n return this.rollOperation(operationType.SellRolls, amount, opts);\n }\n\n async transfer(\n to: Address | string,\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n const fee = opts?.fee ?? (await this.minimalFee());\n\n const body = {\n fee: fee.toString(),\n amount: amount.toString(),\n recipientAddress: to.toString(),\n };\n\n try {\n const { result } = await postRequest<MSSendOperationResp>(\n `${walletApiUrl()}/accounts/${this.accountName}/transfer`,\n body,\n );\n\n return new Operation(this, result.operationId);\n } catch (error) {\n throw errorHandler(operationType.SendTransaction, error);\n }\n }\n\n public async callSC(params: CallSCParams): Promise<Operation> {\n // convert parameter to base64\n let args = '';\n if (params.parameter) {\n if (params.parameter instanceof Uint8Array) {\n args = uint8ArrayToBase64(params.parameter);\n } else {\n args = argsToBase64(params.parameter);\n }\n }\n\n let fee = params?.fee ?? (await this.minimalFee());\n\n const body: ExecuteFunctionBody = {\n nickname: this.accountName,\n name: params.func,\n at: params.target,\n args,\n coins: params.coins ? Number(params.coins) : 0,\n fee: fee.toString(),\n // If maxGas is not provided, estimation will be done by MS\n maxGas: params.maxGas ? params.maxGas.toString() : '',\n async: true,\n };\n\n try {\n const { result } = await postRequest<MSSendOperationResp>(\n `${MASSA_STATION_URL}cmd/executeFunction`,\n body,\n );\n\n return new Operation(this, result.operationId);\n } catch (error) {\n throw errorHandler('callSmartContract', error);\n }\n }\n\n public async networkInfos(): Promise<Network> {\n return networkInfos();\n }\n\n public async readSC(params: ReadSCParams): Promise<ReadSCData> {\n // Gas amount check\n if (params.maxGas && params.maxGas > MAX_GAS_CALL) {\n throw new Error(\n `\n The gas submitted ${params.maxGas.toString()} exceeds the max. allowed block gas of \n ${MAX_GAS_CALL.toString()}\n `,\n );\n }\n\n const client = await getClient();\n\n const fee = params?.fee ?? (await this.minimalFee());\n const caller = params.caller ?? this.address;\n const args = params.parameter ?? new Uint8Array();\n const readOnlyParams = {\n ...params,\n caller,\n fee,\n parameter:\n args instanceof Uint8Array ? args : Uint8Array.from(args.serialize()),\n };\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n return client.executeReadOnlyCall(readOnlyParams);\n }\n\n public async deploySC(params: DeploySCParams): Promise<SmartContract> {\n try {\n const args = params.parameter ?? new Uint8Array();\n const parameters = args instanceof Uint8Array ? args : args.serialize();\n const coins = params.coins ?? 0n; // If coins is undefined, some vesions of station will have a panic\n const maxCoins =\n params.maxCoins ??\n StorageCost.smartContractDeploy(params.byteCode.length) + coins;\n const fee = params.fee || (await this.minimalFee());\n\n const body: DeploySCFunctionBody = {\n nickname: this.accountName,\n smartContract: uint8ArrayToBase64(params.byteCode),\n maxCoins: maxCoins.toString(), // SmartContract deployment costs\n coins: coins.toString(),\n fee: fee.toString(),\n parameters: uint8ArrayToBase64(parameters),\n description: `${formatMas(\n coins,\n )} $MAS coins allocated to datastore + ${formatMas(\n fee,\n )} $MAS fee for operation`,\n };\n\n const { result } = await postRequest<MSSendOperationResp>(\n `${MASSA_STATION_URL}cmd/deploySC`,\n body,\n );\n\n const operationId = result?.operationId;\n\n if (!operationId) throw new Error('Operation ID not found');\n\n const operation = new Operation(this, operationId);\n const deployedAddress = await operation.getDeployedAddress(\n params.waitFinalExecution,\n );\n\n return new SmartContract(this, deployedAddress);\n } catch (error) {\n throw new Error(`Error during smart contract deployment: ${error}`);\n }\n }\n\n executeSC(): Promise<Operation> {\n throw new Error('Method not implemented.');\n }\n\n public async getOperationStatus(opId: string): Promise<OperationStatus> {\n const client = await getClient();\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n return client.getOperationStatus(opId);\n }\n\n public async getEvents(filter: EventFilter): Promise<rpcTypes.OutputEvents> {\n const client = await getClient();\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n return client.getEvents(filter);\n }\n\n public async getNodeStatus(): Promise<NodeStatusInfo> {\n const client = await getClient();\n const status = await client.status();\n return formatNodeStatusObject(status);\n }\n\n public async getStorageKeys(\n address: string,\n filter: Uint8Array | string = new Uint8Array(),\n final = true,\n ): Promise<Uint8Array[]> {\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n const client = await getClient();\n const filterBytes: Uint8Array =\n typeof filter === 'string' ? strToBytes(filter) : filter;\n return client.getDataStoreKeys(address, filterBytes, final);\n }\n\n public async readStorage(\n address: string,\n keys: Uint8Array[] | string[],\n final = true,\n ): Promise<(Uint8Array | null)[]> {\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n const client = await getClient();\n const entries: DatastoreEntry[] = keys.map((key) => ({\n key,\n address,\n }));\n return client.getDatastoreEntries(entries, final);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"MassaStationAccount.js","sourceRoot":"","sources":["../../../src/massaStation/MassaStationAccount.ts"],"names":[],"mappings":"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","sourcesContent":["import { getRequest, postRequest } from './RequestHandler';\nimport { walletApiUrl, MASSA_STATION_URL } from './MassaStationWallet';\nimport {\n argsToBase64,\n base64ToByteArray,\n uint8ArrayToBase64,\n} from '../utils/base64';\nimport {\n DeploySCFunctionBody,\n ExecuteFunctionBody,\n ExecuteSCBody,\n MSAccountSignPayload,\n MSAccountSignResp,\n MSBalancesResp,\n MSDeploySCParams,\n MSExecuteScParams,\n MSSendOperationResp,\n} from './types';\nimport { errorHandler } from '../errors/utils/errorHandler';\nimport { operationType } from '../utils/constants';\nimport {\n Address,\n CallSCParams,\n EventFilter,\n Mas,\n MAX_GAS_CALL,\n Network,\n NodeStatusInfo,\n Operation,\n OperationOptions,\n OperationStatus,\n Provider,\n ReadSCData,\n ReadSCParams,\n SignedData,\n SignOptions,\n SmartContract,\n rpcTypes,\n StorageCost,\n formatMas,\n DEPLOYER_BYTECODE,\n populateDatastore,\n} from '@massalabs/massa-web3';\nimport { getClient, networkInfos } from './utils/network';\nimport { WalletName } from '../wallet';\nimport bs58check from 'bs58check';\n\n/**\n * This module contains the MassaStationAccount class. It is responsible for representing an account in\n * the MassaStation wallet.\n *\n * @remarks\n * This class provides methods to interact with MassaStation account's {@link balance} and to {@link sign} messages.\n *\n */\nexport class MassaStationAccount implements Provider {\n private _providerName = WalletName.MassaWallet;\n\n constructor(\n public address: string,\n public accountName: string,\n ) {}\n\n get providerName(): string {\n return this._providerName;\n }\n\n public async balance(final = false): Promise<bigint> {\n const { result } = await getRequest<MSBalancesResp>(\n `${MASSA_STATION_URL}massa/addresses?attributes=balance&addresses=${this.address}`,\n );\n\n const balances = result.addressesAttributes[this.address].balance;\n\n return Mas.fromString(final ? balances.final : balances.pending);\n }\n\n async balanceOf(\n addresses: string[],\n final = false,\n ): Promise<{ address: string; balance: bigint }[]> {\n const queryParams = new URLSearchParams();\n\n queryParams.append('attributes', 'balance');\n addresses.forEach((address) => {\n queryParams.append('addresses', address);\n });\n\n const { result } = await getRequest<MSBalancesResp>(\n `${MASSA_STATION_URL}massa/addresses?${queryParams.toString()}`,\n );\n\n return addresses.map((address) => {\n const balance = result.addressesAttributes[address].balance;\n\n return {\n address,\n balance: Mas.fromString(final ? balance.final : balance.pending),\n };\n });\n }\n\n public async sign(\n data: Uint8Array | string,\n opts?: SignOptions,\n ): Promise<SignedData> {\n const signData: MSAccountSignPayload = {\n description: opts?.description ?? '',\n message: typeof data === 'string' ? data : new TextDecoder().decode(data),\n DisplayData: opts?.displayData ?? true,\n };\n\n try {\n const { result } = await postRequest<MSAccountSignResp>(\n `${walletApiUrl()}/accounts/${this.accountName}/signMessage`,\n signData,\n );\n\n // MS Wallet encodes signature in base64... so we need to decode it en re-encode it in base58\n const signature = bs58check.encode(\n await base64ToByteArray(result.signature),\n );\n\n return {\n publicKey: result.publicKey,\n signature,\n };\n } catch (error) {\n throw errorHandler(operationType.Sign, error);\n }\n }\n\n private async minimalFee(): Promise<bigint> {\n const client = await getClient();\n const { minimalFee } = await client.networkInfos();\n return minimalFee;\n }\n\n private async rollOperation(\n type: operationType.BuyRolls | operationType.SellRolls,\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n let fee = opts?.fee ?? (await this.minimalFee());\n\n const body = {\n fee: fee.toString(),\n amount: amount.toString(),\n side: type === operationType.BuyRolls ? 'buy' : 'sell',\n };\n try {\n const { result } = await postRequest<MSSendOperationResp>(\n `${walletApiUrl()}/accounts/${this.accountName}/rolls`,\n body,\n );\n\n return new Operation(this, result.operationId);\n } catch (error) {\n throw errorHandler(type, error);\n }\n }\n\n public async buyRolls(\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n return this.rollOperation(operationType.BuyRolls, amount, opts);\n }\n\n public async sellRolls(\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n return this.rollOperation(operationType.SellRolls, amount, opts);\n }\n\n async transfer(\n to: Address | string,\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n const fee = opts?.fee ?? (await this.minimalFee());\n\n const body = {\n fee: fee.toString(),\n amount: amount.toString(),\n recipientAddress: to.toString(),\n };\n\n try {\n const { result } = await postRequest<MSSendOperationResp>(\n `${walletApiUrl()}/accounts/${this.accountName}/transfer`,\n body,\n );\n\n return new Operation(this, result.operationId);\n } catch (error) {\n throw errorHandler(operationType.SendTransaction, error);\n }\n }\n\n public async callSC(params: CallSCParams): Promise<Operation> {\n // convert parameter to base64\n let args = '';\n if (params.parameter) {\n if (params.parameter instanceof Uint8Array) {\n args = uint8ArrayToBase64(params.parameter);\n } else {\n args = argsToBase64(params.parameter);\n }\n }\n\n let fee = params?.fee ?? (await this.minimalFee());\n\n const body: ExecuteFunctionBody = {\n nickname: this.accountName,\n name: params.func,\n at: params.target,\n args,\n coins: params.coins ? Number(params.coins) : 0,\n fee: fee.toString(),\n // If maxGas is not provided, estimation will be done by MS\n maxGas: params.maxGas ? params.maxGas.toString() : '',\n async: true,\n };\n\n try {\n const { result } = await postRequest<MSSendOperationResp>(\n `${MASSA_STATION_URL}cmd/executeFunction`,\n body,\n );\n\n return new Operation(this, result.operationId);\n } catch (error) {\n throw errorHandler('callSmartContract', error);\n }\n }\n\n public async networkInfos(): Promise<Network> {\n return networkInfos();\n }\n\n public async readSC(params: ReadSCParams): Promise<ReadSCData> {\n // Gas amount check\n if (params.maxGas && params.maxGas > MAX_GAS_CALL) {\n throw new Error(\n `\n The gas submitted ${params.maxGas.toString()} exceeds the max. allowed block gas of \n ${MAX_GAS_CALL.toString()}\n `,\n );\n }\n\n const client = await getClient();\n\n const fee = params?.fee ?? (await this.minimalFee());\n const caller = params.caller ?? this.address;\n const args = params.parameter ?? new Uint8Array();\n const readOnlyParams = {\n ...params,\n caller,\n fee,\n parameter:\n args instanceof Uint8Array ? args : Uint8Array.from(args.serialize()),\n };\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n return client.readSC(readOnlyParams);\n }\n\n public async deploySC(params: MSDeploySCParams): Promise<SmartContract> {\n try {\n const args = params.parameter ?? new Uint8Array();\n const parameters = args instanceof Uint8Array ? args : args.serialize();\n const coins = params.coins ?? 0n; // If coins is undefined, some vesions of station will have a panic\n const maxCoins =\n params.maxCoins ??\n StorageCost.smartContractDeploy(params.byteCode.length) + coins;\n const fee = params.fee ?? (await this.minimalFee());\n\n let maxGas = params.maxGas;\n if (!maxGas) {\n const client = await getClient();\n const datastore = populateDatastore([\n {\n data: params.byteCode,\n args: parameters,\n coins,\n },\n ]);\n\n maxGas = await client.executeSCGasEstimation({\n ...params,\n byteCode: DEPLOYER_BYTECODE,\n datastore,\n caller: this.address,\n });\n }\n\n const description =\n params.description ??\n `${formatMas(coins)} MAS coins allocated to new smart contract`;\n\n const body: DeploySCFunctionBody = {\n nickname: this.accountName,\n smartContract: uint8ArrayToBase64(params.byteCode),\n coins: coins.toString(),\n parameters: uint8ArrayToBase64(parameters),\n maxCoins: maxCoins.toString(),\n fee: fee.toString(),\n maxGas: maxGas.toString(),\n description,\n };\n\n const { result } = await postRequest<MSSendOperationResp>(\n `${MASSA_STATION_URL}cmd/deploySC`,\n body,\n );\n\n const operationId = result?.operationId;\n\n if (!operationId) throw new Error('Operation ID not found');\n\n const operation = new Operation(this, operationId);\n const deployedAddress = await operation.getDeployedAddress(\n params.waitFinalExecution,\n );\n\n return new SmartContract(this, deployedAddress);\n } catch (error) {\n throw new Error(`Error during smart contract deployment: ${error}`);\n }\n }\n\n async executeSC(params: MSExecuteScParams): Promise<Operation> {\n try {\n const fee = params.fee ?? (await this.minimalFee());\n const maxCoins = params.maxCoins ?? 0n;\n\n let maxGas = params.maxGas;\n if (!maxGas) {\n const client = await getClient();\n maxGas = await client.executeSCGasEstimation({\n ...params,\n caller: this.address,\n });\n }\n\n const datastore: [string, string][] = [];\n if (params.datastore) {\n for (const [key, value] of params.datastore.entries()) {\n datastore.push([uint8ArrayToBase64(key), uint8ArrayToBase64(value)]);\n }\n }\n\n const body: ExecuteSCBody = {\n nickname: this.accountName,\n bytecode: uint8ArrayToBase64(params.byteCode),\n datastore,\n maxCoins: maxCoins.toString(),\n fee: fee.toString(),\n description: params.description ?? '',\n };\n\n const { result } = await postRequest<MSSendOperationResp>(\n `${MASSA_STATION_URL}cmd/executeSC`,\n body,\n );\n\n const operationId = result?.operationId;\n\n if (!operationId) throw new Error('Operation ID not found');\n\n return new Operation(this, operationId);\n } catch (error) {\n throw new Error(\n `Error during smart contract bytecode execution: ${error}`,\n );\n }\n }\n\n public async getOperationStatus(opId: string): Promise<OperationStatus> {\n const client = await getClient();\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n return client.getOperationStatus(opId);\n }\n\n public async getEvents(filter: EventFilter): Promise<rpcTypes.OutputEvents> {\n const client = await getClient();\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n return client.getEvents(filter);\n }\n\n public async getNodeStatus(): Promise<NodeStatusInfo> {\n const client = await getClient();\n return client.getNodeStatus();\n }\n\n public async getStorageKeys(\n address: string,\n filter: Uint8Array | string = new Uint8Array(),\n final = true,\n ): Promise<Uint8Array[]> {\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n const client = await getClient();\n return client.getStorageKeys(address, filter, final);\n }\n\n public async readStorage(\n address: string,\n keys: Uint8Array[] | string[],\n final = true,\n ): Promise<(Uint8Array | null)[]> {\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n const client = await getClient();\n return client.readStorage(address, keys, final);\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NetworkName } from '@massalabs/massa-web3';
|
|
1
|
+
import { DeploySCParams, ExecuteScParams, NetworkName } from '@massalabs/massa-web3';
|
|
2
2
|
export type ExecuteFunctionBody = {
|
|
3
3
|
nickname: string;
|
|
4
4
|
name: string;
|
|
@@ -17,6 +17,16 @@ export type DeploySCFunctionBody = {
|
|
|
17
17
|
parameters: string;
|
|
18
18
|
fee: string;
|
|
19
19
|
description: string;
|
|
20
|
+
maxGas?: string;
|
|
21
|
+
};
|
|
22
|
+
export type ExecuteSCBody = {
|
|
23
|
+
nickname: string;
|
|
24
|
+
bytecode: string;
|
|
25
|
+
datastore: [string, string][];
|
|
26
|
+
maxCoins: string;
|
|
27
|
+
fee: string;
|
|
28
|
+
description?: string;
|
|
29
|
+
maxGas?: string;
|
|
20
30
|
};
|
|
21
31
|
export type PluginInfo = {
|
|
22
32
|
author: string;
|
|
@@ -106,4 +116,10 @@ export interface SignRule {
|
|
|
106
116
|
export type AddUpdateSignRuleResponse = {
|
|
107
117
|
id: string;
|
|
108
118
|
};
|
|
119
|
+
export type MSDeploySCParams = DeploySCParams & {
|
|
120
|
+
description?: string;
|
|
121
|
+
};
|
|
122
|
+
export type MSExecuteScParams = ExecuteScParams & {
|
|
123
|
+
description?: string;
|
|
124
|
+
};
|
|
109
125
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/massaStation/types.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/massaStation/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/massaStation/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/massaStation/types.ts"],"names":[],"mappings":"AAuDA,MAAM,CAAN,IAAY,yBAGX;AAHD,WAAY,yBAAyB;IACnC,sCAAS,CAAA;IACT,oDAAuB,CAAA;AACzB,CAAC,EAHW,yBAAyB,KAAzB,yBAAyB,QAGpC;AAkED,MAAM,CAAN,IAAY,QAGX;AAHD,WAAY,QAAQ;IAClB,6DAAiD,CAAA;IACjD,kCAAsB,CAAA;AACxB,CAAC,EAHW,QAAQ,KAAR,QAAQ,QAGnB","sourcesContent":["import {\n DeploySCParams,\n ExecuteScParams,\n NetworkName,\n} from '@massalabs/massa-web3';\n\nexport type ExecuteFunctionBody = {\n nickname: string;\n name: string;\n at: string;\n args?: string;\n fee?: string;\n maxGas?: string;\n coins?: number; // number type keeped for backward compatibility\n async?: boolean;\n};\n\nexport type DeploySCFunctionBody = {\n nickname: string;\n smartContract: string;\n maxCoins: string;\n coins: string;\n parameters: string;\n fee: string;\n description: string;\n maxGas?: string;\n};\n\nexport type ExecuteSCBody = {\n nickname: string;\n bytecode: string;\n datastore: [string, string][];\n maxCoins: string;\n fee: string;\n description?: string;\n maxGas?: string;\n};\n\nexport type PluginInfo = {\n author: string;\n description: string;\n home: string;\n name: string;\n status: string;\n version: string;\n};\n\nexport type PluginManagerBody = PluginInfo[];\n\nexport type MSNetworksResp = {\n chainId: number | string;\n network: NetworkName;\n url: string;\n};\n\nexport enum MassaStationAccountStatus {\n OK = 'ok',\n CORRUPTED = 'corrupted',\n}\n\nexport type MSAccountsResp = MSAccount[];\n\n/**\n * This interface represents the payload returned by making a call to MassaStation's accounts url.\n */\nexport type MSAccount = {\n address: string;\n nickname: string;\n keyPair: {\n nonce: string;\n privateKey: string;\n publicKey: string;\n salt: string;\n };\n status: MassaStationAccountStatus;\n};\n\n/**\n * This interface represents the payload returned by making a call to MassaStation's get balances url.\n */\nexport type MSBalancesResp = {\n addressesAttributes: {\n [key: string]: {\n balance: {\n pending: string;\n final: string;\n };\n };\n };\n};\n\n/**\n * Payload for a sign message request.\n */\nexport type MSAccountSignPayload = {\n description: string;\n message: string;\n DisplayData: boolean;\n};\n\n/**\n * Response from the content script after a signing operation.\n */\nexport type MSAccountSignResp = {\n /** Public key of the account */\n publicKey: string;\n /** Signed message data */\n signature: string;\n};\n\nexport type MSSendOperationResp = {\n operationId: string;\n};\n\nexport interface AccountConfig {\n signRules: SignRule[];\n}\n\nexport interface Config {\n accounts: {\n [key: string]: AccountConfig;\n };\n}\n\nexport enum RuleType {\n DisablePasswordPrompt = 'DISABLE_PASSWORD_PROMPT',\n AutoSign = 'AUTO_SIGN',\n}\n\nexport interface SignRule {\n id?: string;\n ruleType: RuleType;\n name?: string;\n contract: string;\n enabled: boolean;\n}\n\nexport type AddUpdateSignRuleResponse = {\n id: string;\n};\n\nexport type MSDeploySCParams = DeploySCParams & {\n description?: string;\n};\n\nexport type MSExecuteScParams = ExecuteScParams & {\n description?: string;\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { JsonRpcPublicProvider, Network } from '@massalabs/massa-web3';
|
|
2
2
|
export declare function networkInfos(): Promise<Network>;
|
|
3
|
-
export declare function getClient(): Promise<
|
|
3
|
+
export declare function getClient(): Promise<JsonRpcPublicProvider>;
|
|
4
4
|
//# sourceMappingURL=network.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../../src/massaStation/utils/network.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../../src/massaStation/utils/network.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,OAAO,EAER,MAAM,uBAAuB,CAAC;AAW/B,wBAAsB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAkBrD;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAMhE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { JsonRpcPublicProvider, PublicApiUrl, } from '@massalabs/massa-web3';
|
|
2
2
|
import { MASSA_STATION_URL } from '../MassaStationWallet';
|
|
3
3
|
import { getRequest } from '../RequestHandler';
|
|
4
4
|
import { isStandalone } from './standalone';
|
|
@@ -9,26 +9,16 @@ let rpcUrl;
|
|
|
9
9
|
export async function networkInfos() {
|
|
10
10
|
if (isStandalone()) {
|
|
11
11
|
rpcUrl = PublicApiUrl.Buildnet;
|
|
12
|
-
client =
|
|
13
|
-
return
|
|
14
|
-
name: NetworkName.Buildnet,
|
|
15
|
-
url: rpcUrl,
|
|
16
|
-
chainId: CHAIN_ID.Buildnet,
|
|
17
|
-
minimalFee: await client.getMinimalFee(),
|
|
18
|
-
};
|
|
12
|
+
client = JsonRpcPublicProvider.fromRPCUrl(rpcUrl);
|
|
13
|
+
return client.networkInfos();
|
|
19
14
|
}
|
|
20
15
|
const { result } = await getRequest(`${MASSA_STATION_URL}massa/node`);
|
|
21
16
|
const url = result.url;
|
|
22
17
|
if (!client || rpcUrl !== url) {
|
|
23
|
-
client =
|
|
18
|
+
client = JsonRpcPublicProvider.fromRPCUrl(url);
|
|
24
19
|
rpcUrl = url;
|
|
25
20
|
}
|
|
26
|
-
return
|
|
27
|
-
name: result.network,
|
|
28
|
-
url,
|
|
29
|
-
chainId: BigInt(result.chainId),
|
|
30
|
-
minimalFee: await client.getMinimalFee(),
|
|
31
|
-
};
|
|
21
|
+
return client.networkInfos();
|
|
32
22
|
}
|
|
33
23
|
export async function getClient() {
|
|
34
24
|
if (!client) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../../src/massaStation/utils/network.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../../src/massaStation/utils/network.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAErB,YAAY,GACb,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,+CAA+C;AAC/C,IAAI,MAA6B,CAAC;AAClC,0CAA0C;AAC1C,IAAI,MAAc,CAAC;AAEnB,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,YAAY,EAAE,EAAE;QAClB,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC;QAC/B,MAAM,GAAG,qBAAqB,CAAC,UAAU,CAAC,MAAM,CAA0B,CAAC;QAC3E,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;KAC9B;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CACjC,GAAG,iBAAiB,YAAY,CACjC,CAAC;IAEF,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACvB,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,GAAG,EAAE;QAC7B,MAAM,GAAG,qBAAqB,CAAC,UAAU,CAAC,GAAG,CAA0B,CAAC;QACxE,MAAM,GAAG,GAAG,CAAC;KACd;IAED,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,IAAI,CAAC,MAAM,EAAE;QACX,yBAAyB;QACzB,MAAM,YAAY,EAAE,CAAC;KACtB;IACD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import {\n JsonRpcPublicProvider,\n Network,\n PublicApiUrl,\n} from '@massalabs/massa-web3';\nimport { MSNetworksResp } from '../types';\nimport { MASSA_STATION_URL } from '../MassaStationWallet';\nimport { getRequest } from '../RequestHandler';\nimport { isStandalone } from './standalone';\n\n// Use client singleton to benefit from caching\nlet client: JsonRpcPublicProvider;\n// Use rpcUrl to check if node has changed\nlet rpcUrl: string;\n\nexport async function networkInfos(): Promise<Network> {\n if (isStandalone()) {\n rpcUrl = PublicApiUrl.Buildnet;\n client = JsonRpcPublicProvider.fromRPCUrl(rpcUrl) as JsonRpcPublicProvider;\n return client.networkInfos();\n }\n\n const { result } = await getRequest<MSNetworksResp>(\n `${MASSA_STATION_URL}massa/node`,\n );\n\n const url = result.url;\n if (!client || rpcUrl !== url) {\n client = JsonRpcPublicProvider.fromRPCUrl(url) as JsonRpcPublicProvider;\n rpcUrl = url;\n }\n\n return client.networkInfos();\n}\n\nexport async function getClient(): Promise<JsonRpcPublicProvider> {\n if (!client) {\n // this initialize client\n await networkInfos();\n }\n return client;\n}\n"]}
|