@mainsail/crypto-transaction-evm-call 0.0.1-evm.1 → 0.0.1-evm.3
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/distribution/handlers/evm-call.d.ts +2 -7
- package/distribution/handlers/evm-call.d.ts.map +1 -1
- package/distribution/handlers/evm-call.js +18 -52
- package/distribution/handlers/evm-call.js.map +1 -1
- package/distribution/index.d.ts.map +1 -1
- package/distribution/index.js +1 -10
- package/distribution/index.js.map +1 -1
- package/distribution/versions/1.d.ts.map +1 -1
- package/distribution/versions/1.js +8 -5
- package/distribution/versions/1.js.map +1 -1
- package/package.json +12 -12
@@ -4,16 +4,11 @@ import { Handlers } from "@mainsail/transactions";
|
|
4
4
|
export declare class EvmCallTransactionHandler extends Handlers.TransactionHandler {
|
5
5
|
#private;
|
6
6
|
private readonly events;
|
7
|
-
private readonly gasFeeCalculator;
|
8
7
|
private readonly state;
|
8
|
+
private readonly addressFactory;
|
9
9
|
dependencies(): ReadonlyArray<Handlers.TransactionHandlerConstructor>;
|
10
10
|
getConstructor(): TransactionConstructor;
|
11
11
|
isActivated(): Promise<boolean>;
|
12
|
-
|
13
|
-
throwIfCannotEnterPool(context: Contracts.Transactions.TransactionHandlerContext, transaction: Contracts.Crypto.Transaction): Promise<void>;
|
14
|
-
applyToSender(context: Contracts.Transactions.TransactionHandlerContext, transaction: Contracts.Crypto.Transaction): Promise<Contracts.Transactions.TransactionApplyResult>;
|
15
|
-
applyToRecipient(context: Contracts.Transactions.TransactionHandlerContext, transaction: Contracts.Crypto.Transaction): Promise<Contracts.Transactions.TransactionApplyResult>;
|
16
|
-
protected verifyTransactionFee(context: Contracts.Transactions.TransactionHandlerContext, transaction: Contracts.Crypto.Transaction, sender: Contracts.State.Wallet): void;
|
17
|
-
protected applyFeeToSender(transaction: Contracts.Crypto.Transaction, sender: Contracts.State.Wallet): void;
|
12
|
+
apply(context: Contracts.Transactions.TransactionHandlerContext, transaction: Contracts.Crypto.Transaction): Promise<Contracts.Evm.TransactionReceipt>;
|
18
13
|
}
|
19
14
|
//# sourceMappingURL=evm-call.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"evm-call.d.ts","sourceRoot":"","sources":["../../source/handlers/evm-call.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,
|
1
|
+
{"version":3,"file":"evm-call.d.ts","sourceRoot":"","sources":["../../source/handlers/evm-call.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAuB,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIlD,qBACa,yBAA0B,SAAQ,QAAQ,CAAC,kBAAkB;;IAEzE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAG3D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAG/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmC;IAE3D,YAAY,IAAI,aAAa,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAIrE,cAAc,IAAI,sBAAsB;IAIlC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,KAAK,CACjB,OAAO,EAAE,SAAS,CAAC,YAAY,CAAC,yBAAyB,EACzD,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,GACvC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC;CA6C5C"}
|
@@ -12,9 +12,9 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
12
12
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
13
13
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
14
14
|
};
|
15
|
-
var _EvmCallTransactionHandler_instances, _EvmCallTransactionHandler_emit
|
15
|
+
var _EvmCallTransactionHandler_instances, _EvmCallTransactionHandler_emit;
|
16
16
|
import { inject, injectable } from "@mainsail/container";
|
17
|
-
import { Contracts, Events,
|
17
|
+
import { Contracts, Events, Identifiers } from "@mainsail/contracts";
|
18
18
|
import { Utils } from "@mainsail/kernel";
|
19
19
|
import { Handlers } from "@mainsail/transactions";
|
20
20
|
import { EvmCallTransaction } from "../versions/index.js";
|
@@ -32,64 +32,38 @@ let EvmCallTransactionHandler = class EvmCallTransactionHandler extends Handlers
|
|
32
32
|
async isActivated() {
|
33
33
|
return true;
|
34
34
|
}
|
35
|
-
async
|
36
|
-
return super.throwIfCannotBeApplied(context, transaction, wallet);
|
37
|
-
}
|
38
|
-
async throwIfCannotEnterPool(context, transaction) { }
|
39
|
-
async applyToSender(context, transaction) {
|
40
|
-
await super.applyToSender(context, transaction);
|
41
|
-
// Taken from receipt in applyToRecipient
|
42
|
-
return { gasUsed: 0 };
|
43
|
-
}
|
44
|
-
async applyToRecipient(context, transaction) {
|
35
|
+
async apply(context, transaction) {
|
45
36
|
Utils.assert.defined(transaction.data.asset?.evmCall);
|
46
37
|
Utils.assert.defined(transaction.id);
|
47
38
|
const { evmCall } = transaction.data.asset;
|
48
39
|
const { evmSpec } = this.configuration.getMilestone();
|
49
|
-
const
|
40
|
+
const address = await this.addressFactory.fromPublicKey(transaction.data.senderPublicKey);
|
50
41
|
try {
|
51
42
|
const { instance, blockContext } = context.evm;
|
52
43
|
const { receipt } = await instance.process({
|
53
44
|
blockContext,
|
54
|
-
caller:
|
45
|
+
caller: address,
|
55
46
|
data: Buffer.from(evmCall.payload, "hex"),
|
56
47
|
gasLimit: BigInt(evmCall.gasLimit),
|
48
|
+
gasPrice: transaction.data.fee.toBigInt(),
|
49
|
+
nonce: transaction.data.nonce.toBigInt(),
|
57
50
|
recipient: transaction.data.recipientId,
|
58
51
|
sequence: transaction.data.sequence,
|
59
52
|
specId: evmSpec,
|
60
53
|
txHash: transaction.id,
|
54
|
+
value: transaction.data.amount.toBigInt(),
|
55
|
+
});
|
56
|
+
void __classPrivateFieldGet(this, _EvmCallTransactionHandler_instances, "m", _EvmCallTransactionHandler_emit).call(this, Events.EvmEvent.TransactionReceipt, {
|
57
|
+
receipt,
|
58
|
+
sender: address,
|
59
|
+
transactionId: transaction.id,
|
61
60
|
});
|
62
|
-
|
63
|
-
const feeConsumed = this.gasFeeCalculator.calculateConsumed(transaction.data.fee, Number(receipt.gasUsed));
|
64
|
-
const newBalance = sender.getBalance().minus(feeConsumed);
|
65
|
-
if (newBalance.isNegative()) {
|
66
|
-
throw new Exceptions.InsufficientBalanceError();
|
67
|
-
}
|
68
|
-
sender.setBalance(newBalance);
|
69
|
-
if (instance.mode() === Contracts.Evm.EvmMode.Persistent && !this.state.isBootstrap()) {
|
70
|
-
this.logger.debug(`executed EVM call (success=${receipt.success}, gasUsed=${receipt.gasUsed} paidNativeFee=${__classPrivateFieldGet(this, _EvmCallTransactionHandler_instances, "m", _EvmCallTransactionHandler_formatSatoshi).call(this, feeConsumed)} deployed=${receipt.deployedContractAddress})`);
|
71
|
-
void __classPrivateFieldGet(this, _EvmCallTransactionHandler_instances, "m", _EvmCallTransactionHandler_emit).call(this, Events.EvmEvent.TransactionReceipt, {
|
72
|
-
receipt,
|
73
|
-
sender: sender.getAddress(),
|
74
|
-
transactionId: transaction.id,
|
75
|
-
});
|
76
|
-
}
|
77
|
-
return { gasUsed: Number(receipt.gasUsed), receipt };
|
61
|
+
return receipt;
|
78
62
|
}
|
79
63
|
catch (error) {
|
80
64
|
return this.app.terminate("invalid EVM call", error);
|
81
65
|
}
|
82
66
|
}
|
83
|
-
verifyTransactionFee(context, transaction, sender) {
|
84
|
-
Utils.assert.defined(transaction.data.asset?.evmCall);
|
85
|
-
const maxFee = this.gasFeeCalculator.calculate(transaction);
|
86
|
-
if (sender.getBalance().minus(maxFee).isNegative() && this.configuration.getHeight() > 0) {
|
87
|
-
throw new Exceptions.InsufficientBalanceError();
|
88
|
-
}
|
89
|
-
}
|
90
|
-
applyFeeToSender(transaction, sender) {
|
91
|
-
// Fee is taken after EVM execution to take the actual consumed gas into account
|
92
|
-
}
|
93
67
|
};
|
94
68
|
_EvmCallTransactionHandler_instances = new WeakSet();
|
95
69
|
_EvmCallTransactionHandler_emit = async function _EvmCallTransactionHandler_emit(event, data) {
|
@@ -98,26 +72,18 @@ _EvmCallTransactionHandler_emit = async function _EvmCallTransactionHandler_emit
|
|
98
72
|
}
|
99
73
|
return this.events.dispatch(event, data);
|
100
74
|
};
|
101
|
-
_EvmCallTransactionHandler_formatSatoshi = function _EvmCallTransactionHandler_formatSatoshi(amount) {
|
102
|
-
const { decimals, denomination } = this.configuration.getMilestone().satoshi;
|
103
|
-
const localeString = (+amount / denomination).toLocaleString("en", {
|
104
|
-
maximumFractionDigits: decimals,
|
105
|
-
minimumFractionDigits: 0,
|
106
|
-
});
|
107
|
-
return `${localeString} ${this.configuration.get("network.client.symbol")}`;
|
108
|
-
};
|
109
75
|
__decorate([
|
110
76
|
inject(Identifiers.Services.EventDispatcher.Service),
|
111
77
|
__metadata("design:type", Object)
|
112
78
|
], EvmCallTransactionHandler.prototype, "events", void 0);
|
113
|
-
__decorate([
|
114
|
-
inject(Identifiers.Evm.Gas.FeeCalculator),
|
115
|
-
__metadata("design:type", Object)
|
116
|
-
], EvmCallTransactionHandler.prototype, "gasFeeCalculator", void 0);
|
117
79
|
__decorate([
|
118
80
|
inject(Identifiers.State.State),
|
119
81
|
__metadata("design:type", Object)
|
120
82
|
], EvmCallTransactionHandler.prototype, "state", void 0);
|
83
|
+
__decorate([
|
84
|
+
inject(Identifiers.Cryptography.Identity.Address.Factory),
|
85
|
+
__metadata("design:type", Object)
|
86
|
+
], EvmCallTransactionHandler.prototype, "addressFactory", void 0);
|
121
87
|
EvmCallTransactionHandler = __decorate([
|
122
88
|
injectable()
|
123
89
|
], EvmCallTransactionHandler);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"evm-call.js","sourceRoot":"","sources":["../../source/handlers/evm-call.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,
|
1
|
+
{"version":3,"file":"evm-call.js","sourceRoot":"","sources":["../../source/handlers/evm-call.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAK7C,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AAEpC,qBACa,eAAgB,SAAQ,SAAS,CAAC,eAAe;;IAChD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B,gBAAgB,IAAI,OAAO;CAalC"}
|
package/distribution/index.js
CHANGED
@@ -9,11 +9,10 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
9
9
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
10
10
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
11
11
|
};
|
12
|
-
var _ServiceProvider_instances,
|
12
|
+
var _ServiceProvider_instances, _ServiceProvider_registerType, _ServiceProvider_registerHandler;
|
13
13
|
import { injectable } from "@mainsail/container";
|
14
14
|
import { Identifiers } from "@mainsail/contracts";
|
15
15
|
import { Providers } from "@mainsail/kernel";
|
16
|
-
import { BigNumber } from "@mainsail/utils";
|
17
16
|
import { EvmCallTransactionHandler } from "./handlers/index.js";
|
18
17
|
import { EvmCallTransaction } from "./versions/1.js";
|
19
18
|
export * from "./builder.js";
|
@@ -24,7 +23,6 @@ let ServiceProvider = class ServiceProvider extends Providers.ServiceProvider {
|
|
24
23
|
_ServiceProvider_instances.add(this);
|
25
24
|
}
|
26
25
|
async register() {
|
27
|
-
__classPrivateFieldGet(this, _ServiceProvider_instances, "m", _ServiceProvider_registerFees).call(this);
|
28
26
|
__classPrivateFieldGet(this, _ServiceProvider_instances, "m", _ServiceProvider_registerType).call(this);
|
29
27
|
__classPrivateFieldGet(this, _ServiceProvider_instances, "m", _ServiceProvider_registerHandler).call(this);
|
30
28
|
}
|
@@ -33,13 +31,6 @@ let ServiceProvider = class ServiceProvider extends Providers.ServiceProvider {
|
|
33
31
|
}
|
34
32
|
};
|
35
33
|
_ServiceProvider_instances = new WeakSet();
|
36
|
-
_ServiceProvider_registerFees = function _ServiceProvider_registerFees() {
|
37
|
-
// TODO
|
38
|
-
this.app.get(Identifiers.Fee.Registry).set(EvmCallTransaction.key, {
|
39
|
-
managed: BigNumber.make("100"),
|
40
|
-
static: BigNumber.make("2500000000"),
|
41
|
-
}[this.app.get(Identifiers.Fee.Type)]);
|
42
|
-
};
|
43
34
|
_ServiceProvider_registerType = function _ServiceProvider_registerType() {
|
44
35
|
this.app
|
45
36
|
.get(Identifiers.Cryptography.Transaction.Registry)
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AAG7B,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,SAAS,CAAC,eAAe;IAAvD;;;IAoBP,CAAC;IAnBO,KAAK,CAAC,QAAQ;QACpB,uBAAA,IAAI,iEAAc,MAAlB,IAAI,CAAgB,CAAC;QAErB,uBAAA,IAAI,oEAAiB,MAArB,IAAI,CAAmB,CAAC;IACzB,CAAC;IAEM,gBAAgB;QACtB,OAAO,IAAI,CAAC;IACb,CAAC;CAWD,CAAA;;;IARC,IAAI,CAAC,GAAG;SACN,GAAG,CAAsB,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC;SACvE,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;AAC/C,CAAC;;IAGA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC;AACxF,CAAC;AAnBW,eAAe;IAD3B,UAAU,EAAE;GACA,eAAe,CAoB3B"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"1.d.ts","sourceRoot":"","sources":["../../source/versions/1.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAe,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAgB,WAAW,EAAyB,MAAM,8BAA8B,CAAC;AAEhG,OAAO,
|
1
|
+
{"version":3,"file":"1.d.ts","sourceRoot":"","sources":["../../source/versions/1.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAe,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAgB,WAAW,EAAyB,MAAM,8BAA8B,CAAC;AAEhG,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAExD,qBACa,kBAAmB,SAAQ,WAAW;IAElD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsC;IAGxE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IAEtC,OAAc,SAAS,EAAE,MAAM,CAA8C;IAC7E,OAAc,IAAI,EAAE,MAAM,CAA4C;IACtE,OAAc,GAAG,SAAa;WAEhB,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC,iBAAiB;IAiCtD,SAAS,IAAI,MAAM;IAeb,SAAS,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IA6B3E,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAqBxD"}
|
@@ -11,13 +11,13 @@ import { inject, injectable } from "@mainsail/container";
|
|
11
11
|
import { Contracts, Identifiers } from "@mainsail/contracts";
|
12
12
|
import { extendSchema, Transaction, transactionBaseSchema } from "@mainsail/crypto-transaction";
|
13
13
|
import { Utils } from "@mainsail/kernel";
|
14
|
-
import { ByteBuffer } from "@mainsail/utils";
|
14
|
+
import { BigNumber, ByteBuffer } from "@mainsail/utils";
|
15
15
|
let EvmCallTransaction = class EvmCallTransaction extends Transaction {
|
16
16
|
static getSchema() {
|
17
17
|
return extendSchema(transactionBaseSchema, {
|
18
18
|
$id: "evmCall",
|
19
19
|
properties: {
|
20
|
-
amount: { bignumber: { maximum:
|
20
|
+
amount: { bignumber: { maximum: undefined, minimum: 0 } },
|
21
21
|
asset: {
|
22
22
|
properties: {
|
23
23
|
evmCall: {
|
@@ -38,7 +38,7 @@ let EvmCallTransaction = class EvmCallTransaction extends Transaction {
|
|
38
38
|
type: "object",
|
39
39
|
unevaluatedProperties: false,
|
40
40
|
},
|
41
|
-
fee: { bignumber: { maximum: 1000, minimum:
|
41
|
+
fee: { bignumber: { maximum: 1000, minimum: 0 } },
|
42
42
|
recipientId: { $ref: "address" },
|
43
43
|
type: { transactionType: Contracts.Crypto.TransactionType.EvmCall },
|
44
44
|
},
|
@@ -49,7 +49,8 @@ let EvmCallTransaction = class EvmCallTransaction extends Transaction {
|
|
49
49
|
const { addressSize, data } = this;
|
50
50
|
Utils.assert.defined(data.asset?.evmCall);
|
51
51
|
const { evmCall } = data.asset;
|
52
|
-
return (
|
52
|
+
return (32 + // amount
|
53
|
+
1 + // recipient marker
|
53
54
|
(data.recipientId ? addressSize : 0) + // recipient
|
54
55
|
4 + // gas limit
|
55
56
|
4 + // payload length
|
@@ -61,7 +62,8 @@ let EvmCallTransaction = class EvmCallTransaction extends Transaction {
|
|
61
62
|
Utils.assert.defined(data.asset.evmCall?.gasLimit);
|
62
63
|
Utils.assert.defined(data.asset.evmCall?.payload);
|
63
64
|
const payloadBytes = Buffer.from(data.asset.evmCall.payload, "hex");
|
64
|
-
const buff = ByteBuffer.fromSize(1 + (data.recipientId ? addressSize : 0) + 4 + 4 + payloadBytes.byteLength);
|
65
|
+
const buff = ByteBuffer.fromSize(32 + 1 + (data.recipientId ? addressSize : 0) + 4 + 4 + payloadBytes.byteLength);
|
66
|
+
buff.writeUint256(data.amount.toBigInt());
|
65
67
|
if (data.recipientId) {
|
66
68
|
buff.writeUint8(1);
|
67
69
|
addressSerializer.serialize(buff, await addressFactory.toBuffer(data.recipientId));
|
@@ -76,6 +78,7 @@ let EvmCallTransaction = class EvmCallTransaction extends Transaction {
|
|
76
78
|
}
|
77
79
|
async deserialize(buf) {
|
78
80
|
const { data, addressFactory, addressSerializer } = this;
|
81
|
+
data.amount = BigNumber.make(buf.readUint256());
|
79
82
|
const recipientMarker = buf.readUint8();
|
80
83
|
if (recipientMarker === 1) {
|
81
84
|
data.recipientId = await addressFactory.fromBuffer(addressSerializer.deserialize(buf));
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"1.js","sourceRoot":"","sources":["../../source/versions/1.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAChG,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
1
|
+
{"version":3,"file":"1.js","sourceRoot":"","sources":["../../source/versions/1.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@mainsail/crypto-transaction-evm-call",
|
3
|
-
"version": "0.0.1-evm.
|
3
|
+
"version": "0.0.1-evm.3",
|
4
4
|
"description": "EVM transaction for the Mainsail blockchain",
|
5
5
|
"license": "GPL-3.0-only",
|
6
6
|
"contributors": [],
|
@@ -11,21 +11,21 @@
|
|
11
11
|
"/distribution"
|
12
12
|
],
|
13
13
|
"dependencies": {
|
14
|
-
"@mainsail/
|
15
|
-
"@mainsail/
|
16
|
-
"@mainsail/kernel": "0.0.1-evm.
|
17
|
-
"@mainsail/
|
18
|
-
"@mainsail/transactions": "0.0.1-evm.
|
19
|
-
"@mainsail/
|
14
|
+
"@mainsail/contracts": "0.0.1-evm.3",
|
15
|
+
"@mainsail/container": "0.0.1-evm.3",
|
16
|
+
"@mainsail/kernel": "0.0.1-evm.3",
|
17
|
+
"@mainsail/utils": "0.0.1-evm.3",
|
18
|
+
"@mainsail/transactions": "0.0.1-evm.3",
|
19
|
+
"@mainsail/crypto-transaction": "0.0.1-evm.3"
|
20
20
|
},
|
21
21
|
"devDependencies": {
|
22
22
|
"ethers": "^6.11.0",
|
23
23
|
"uvu": "^0.5.6",
|
24
|
-
"@mainsail/crypto-address-keccak256": "0.0.1-evm.
|
25
|
-
"@mainsail/crypto-
|
26
|
-
"@mainsail/crypto-
|
27
|
-
"@mainsail/crypto-validation": "0.0.1-evm.
|
28
|
-
"@mainsail/validation": "0.0.1-evm.
|
24
|
+
"@mainsail/crypto-address-keccak256": "0.0.1-evm.3",
|
25
|
+
"@mainsail/crypto-config": "0.0.1-evm.3",
|
26
|
+
"@mainsail/crypto-key-pair-ecdsa": "0.0.1-evm.3",
|
27
|
+
"@mainsail/crypto-validation": "0.0.1-evm.3",
|
28
|
+
"@mainsail/validation": "0.0.1-evm.3"
|
29
29
|
},
|
30
30
|
"engines": {
|
31
31
|
"node": ">=20.x"
|