From 922899eb8cd67d9f13a5730e1754cfc1de671a3e Mon Sep 17 00:00:00 2001 From: asiaziola Date: Wed, 25 May 2022 15:53:38 +0200 Subject: [PATCH] SmartWeaveTags && SmartWeaveError --- .../wasm/as-deploy-write-read.test.ts | 8 +-- .../wasm/go-deploy-write-read.test.ts | 8 +-- .../wasm/rust-deploy-write-read.test.ts | 19 +++++-- src/contract/HandlerBasedContract.ts | 6 +-- src/contract/PstContractImpl.ts | 1 - src/contract/deploy/impl/SourceImpl.ts | 12 ++--- src/core/{WarpTags.ts => SmartWeaveTags.ts} | 2 +- src/core/index.ts | 2 +- .../impl/ArweaveGatewayInteractionsLoader.ts | 8 +-- .../modules/impl/ContractDefinitionLoader.ts | 21 ++++---- src/core/modules/impl/TagsParser.ts | 20 +++---- .../WarpGatewayContractDefinitionLoader.ts | 4 +- src/legacy/create-tx.ts | 12 ++--- src/legacy/errors.ts | 10 ++-- src/plugins/Evolve.ts | 6 +-- tools/bundle.ts | 54 +++++++++---------- 16 files changed, 100 insertions(+), 93 deletions(-) rename src/core/{WarpTags.ts => SmartWeaveTags.ts} (95%) diff --git a/src/__tests__/integration/wasm/as-deploy-write-read.test.ts b/src/__tests__/integration/wasm/as-deploy-write-read.test.ts index d937147..bce0695 100644 --- a/src/__tests__/integration/wasm/as-deploy-write-read.test.ts +++ b/src/__tests__/integration/wasm/as-deploy-write-read.test.ts @@ -3,7 +3,7 @@ import fs from 'fs'; import ArLocal from 'arlocal'; import Arweave from 'arweave'; import { JWKInterface } from 'arweave/node/lib/wallet'; -import { Contract, getTag, LoggerFactory, Warp, WarpNodeFactory, WarpTags } from '@warp'; +import { Contract, getTag, LoggerFactory, Warp, WarpNodeFactory, SmartWeaveTags } from '@warp'; import path from 'path'; import { addFunds, mineBlock } from '../_helpers'; @@ -72,9 +72,9 @@ describe('Testing the Warp client for AssemblyScript WASM contract', () => { expect(contractTx).not.toBeNull(); - const contractSrcTx = await arweave.transactions.get(getTag(contractTx, WarpTags.CONTRACT_SRC_TX_ID)); - expect(getTag(contractSrcTx, WarpTags.CONTENT_TYPE)).toEqual('application/wasm'); - expect(getTag(contractSrcTx, WarpTags.WASM_LANG)).toEqual('assemblyscript'); + const contractSrcTx = await arweave.transactions.get(getTag(contractTx, SmartWeaveTags.CONTRACT_SRC_TX_ID)); + expect(getTag(contractSrcTx, SmartWeaveTags.CONTENT_TYPE)).toEqual('application/wasm'); + expect(getTag(contractSrcTx, SmartWeaveTags.WASM_LANG)).toEqual('assemblyscript'); }); it('should properly read initial state', async () => { diff --git a/src/__tests__/integration/wasm/go-deploy-write-read.test.ts b/src/__tests__/integration/wasm/go-deploy-write-read.test.ts index 360efcc..5fb0b7e 100644 --- a/src/__tests__/integration/wasm/go-deploy-write-read.test.ts +++ b/src/__tests__/integration/wasm/go-deploy-write-read.test.ts @@ -3,7 +3,7 @@ import fs from 'fs'; import ArLocal from 'arlocal'; import Arweave from 'arweave'; import { JWKInterface } from 'arweave/node/lib/wallet'; -import { getTag, LoggerFactory, PstContract, PstState, Warp, WarpNodeFactory, WarpTags } from '@warp'; +import { getTag, LoggerFactory, PstContract, PstState, Warp, WarpNodeFactory, SmartWeaveTags } from '@warp'; import path from 'path'; import { addFunds, mineBlock } from '../_helpers'; @@ -109,9 +109,9 @@ describe('Testing the Go WASM Profit Sharing Token', () => { expect(contractTx).not.toBeNull(); - const contractSrcTx = await arweave.transactions.get(getTag(contractTx, WarpTags.CONTRACT_SRC_TX_ID)); - expect(getTag(contractSrcTx, WarpTags.CONTENT_TYPE)).toEqual('application/wasm'); - expect(getTag(contractSrcTx, WarpTags.WASM_LANG)).toEqual('go'); + const contractSrcTx = await arweave.transactions.get(getTag(contractTx, SmartWeaveTags.CONTRACT_SRC_TX_ID)); + expect(getTag(contractSrcTx, SmartWeaveTags.CONTENT_TYPE)).toEqual('application/wasm'); + expect(getTag(contractSrcTx, SmartWeaveTags.WASM_LANG)).toEqual('go'); }); it('should read pst state and balance data', async () => { diff --git a/src/__tests__/integration/wasm/rust-deploy-write-read.test.ts b/src/__tests__/integration/wasm/rust-deploy-write-read.test.ts index 271035d..f8aecb8 100644 --- a/src/__tests__/integration/wasm/rust-deploy-write-read.test.ts +++ b/src/__tests__/integration/wasm/rust-deploy-write-read.test.ts @@ -3,7 +3,16 @@ import fs from 'fs'; import ArLocal from 'arlocal'; import Arweave from 'arweave'; import { JWKInterface } from 'arweave/node/lib/wallet'; -import { ArweaveWrapper, getTag, LoggerFactory, PstContract, PstState, Warp, WarpNodeFactory, WarpTags } from '@warp'; +import { + ArweaveWrapper, + getTag, + LoggerFactory, + PstContract, + PstState, + Warp, + WarpNodeFactory, + SmartWeaveTags +} from '@warp'; import path from 'path'; import { addFunds, mineBlock } from '../_helpers'; import { WasmSrc } from '../../../core/modules/impl/wasm/WasmSrc'; @@ -116,11 +125,11 @@ describe('Testing the Rust WASM Profit Sharing Token', () => { const contractTx = await arweave.transactions.get(contractTxId); expect(contractTx).not.toBeNull(); - const contractSrcTxId = getTag(contractTx, WarpTags.CONTRACT_SRC_TX_ID); + const contractSrcTxId = getTag(contractTx, SmartWeaveTags.CONTRACT_SRC_TX_ID); const contractSrcTx = await arweave.transactions.get(contractSrcTxId); - expect(getTag(contractSrcTx, WarpTags.CONTENT_TYPE)).toEqual('application/wasm'); - expect(getTag(contractSrcTx, WarpTags.WASM_LANG)).toEqual('rust'); - expect(getTag(contractSrcTx, WarpTags.WASM_META)).toEqual(JSON.stringify({ dtor: 74 })); + expect(getTag(contractSrcTx, SmartWeaveTags.CONTENT_TYPE)).toEqual('application/wasm'); + expect(getTag(contractSrcTx, SmartWeaveTags.WASM_LANG)).toEqual('rust'); + expect(getTag(contractSrcTx, SmartWeaveTags.WASM_META)).toEqual(JSON.stringify({ dtor: 74 })); const srcTxData = await arweaveWrapper.txData(contractSrcTxId); const wasmSrc = new WasmSrc(srcTxData); diff --git a/src/contract/HandlerBasedContract.ts b/src/contract/HandlerBasedContract.ts index 623c19c..f8ecff9 100644 --- a/src/contract/HandlerBasedContract.ts +++ b/src/contract/HandlerBasedContract.ts @@ -27,7 +27,7 @@ import { SigningFunction, sleep, Warp, - WarpTags, + SmartWeaveTags, SourceType, Tags, SourceImpl, @@ -314,7 +314,7 @@ export class HandlerBasedContract implements Contract { innerWrites.forEach((contractTxId) => { tags.push({ - name: WarpTags.INTERACT_WRITE, + name: SmartWeaveTags.INTERACT_WRITE, value: contractTxId }); }); @@ -331,7 +331,7 @@ export class HandlerBasedContract implements Contract { if (vrf) { tags.push({ - name: WarpTags.REQUEST_VRF, + name: SmartWeaveTags.REQUEST_VRF, value: 'true' }); } diff --git a/src/contract/PstContractImpl.ts b/src/contract/PstContractImpl.ts index 0770122..b635da5 100644 --- a/src/contract/PstContractImpl.ts +++ b/src/contract/PstContractImpl.ts @@ -1,4 +1,3 @@ -import { WarpTags } from '@warp'; import { BalanceResult, HandlerBasedContract, PstContract, PstState, TransferInput } from '@warp/contract'; interface BalanceInput { diff --git a/src/contract/deploy/impl/SourceImpl.ts b/src/contract/deploy/impl/SourceImpl.ts index 0a4f819..fcafe72 100644 --- a/src/contract/deploy/impl/SourceImpl.ts +++ b/src/contract/deploy/impl/SourceImpl.ts @@ -100,14 +100,14 @@ export class SourceImpl implements Source { srcTx.addTag(WarpTags.APP_NAME, 'SmartWeaveContractSource'); // TODO: version should be taken from the current package.json version. - srcTx.addTag(WarpTags.APP_VERSION, '0.3.0'); - srcTx.addTag(WarpTags.SDK, 'Warp'); - srcTx.addTag(WarpTags.CONTENT_TYPE, contractType == 'js' ? 'application/javascript' : 'application/wasm'); + srcTx.addTag(SmartWeaveTags.APP_VERSION, '0.3.0'); + srcTx.addTag(SmartWeaveTags.SDK, 'Warp'); + srcTx.addTag(SmartWeaveTags.CONTENT_TYPE, contractType == 'js' ? 'application/javascript' : 'application/wasm'); if (contractType == 'wasm') { - srcTx.addTag(WarpTags.WASM_LANG, wasmLang); - srcTx.addTag(WarpTags.WASM_LANG_VERSION, wasmVersion); - srcTx.addTag(WarpTags.WASM_META, JSON.stringify(metadata)); + srcTx.addTag(SmartWeaveTags.WASM_LANG, wasmLang); + srcTx.addTag(SmartWeaveTags.WASM_LANG_VERSION, wasmVersion); + srcTx.addTag(SmartWeaveTags.WASM_META, JSON.stringify(metadata)); } if (typeof signer == 'function') { diff --git a/src/core/WarpTags.ts b/src/core/SmartWeaveTags.ts similarity index 95% rename from src/core/WarpTags.ts rename to src/core/SmartWeaveTags.ts index 500f070..9281850 100644 --- a/src/core/WarpTags.ts +++ b/src/core/SmartWeaveTags.ts @@ -1,7 +1,7 @@ /** * Definition of all transaction tags used by the SmartWeave "protocol" */ -export enum WarpTags { +export enum SmartWeaveTags { APP_NAME = 'App-Name', APP_VERSION = 'App-Version', CONTRACT_TX_ID = 'Contract', // note: should be named Contract-Tx-Id diff --git a/src/core/index.ts b/src/core/index.ts index 09af26c..75b2ec7 100644 --- a/src/core/index.ts +++ b/src/core/index.ts @@ -19,7 +19,7 @@ export * from './modules/impl/StateCache'; export * from './modules/impl/wasm/WasmSrc'; export * from './ExecutionContextModifier'; -export * from './WarpTags'; +export * from './SmartWeaveTags'; export * from './ExecutionContext'; export * from './ContractDefinition'; export * from './ContractCallStack'; diff --git a/src/core/modules/impl/ArweaveGatewayInteractionsLoader.ts b/src/core/modules/impl/ArweaveGatewayInteractionsLoader.ts index e746967..dfe9162 100644 --- a/src/core/modules/impl/ArweaveGatewayInteractionsLoader.ts +++ b/src/core/modules/impl/ArweaveGatewayInteractionsLoader.ts @@ -8,7 +8,7 @@ import { InteractionsLoader, LoggerFactory, sleep, - WarpTags + SmartWeaveTags } from '@warp'; import Arweave from 'arweave'; @@ -85,11 +85,11 @@ export class ArweaveGatewayInteractionsLoader implements InteractionsLoader { const mainTransactionsVariables: GqlReqVariables = { tags: [ { - name: WarpTags.APP_NAME, + name: SmartWeaveTags.APP_NAME, values: ['SmartWeaveAction'] }, { - name: WarpTags.CONTRACT_TX_ID, + name: SmartWeaveTags.CONTRACT_TX_ID, values: [contractId] } ], @@ -108,7 +108,7 @@ export class ArweaveGatewayInteractionsLoader implements InteractionsLoader { const innerWritesVariables: GqlReqVariables = { tags: [ { - name: WarpTags.INTERACT_WRITE, + name: SmartWeaveTags.INTERACT_WRITE, values: [contractId] } ], diff --git a/src/core/modules/impl/ContractDefinitionLoader.ts b/src/core/modules/impl/ContractDefinitionLoader.ts index 3f0f741..3d6df01 100644 --- a/src/core/modules/impl/ContractDefinitionLoader.ts +++ b/src/core/modules/impl/ContractDefinitionLoader.ts @@ -7,8 +7,9 @@ import { DefinitionLoader, getTag, LoggerFactory, - WarpTags, - WarpCache + SmartWeaveTags, + WarpCache, + WarpTags } from '@warp'; import Arweave from 'arweave'; import Transaction from 'arweave/web/lib/transaction'; @@ -50,8 +51,8 @@ export class ContractDefinitionLoader implements DefinitionLoader { this.logger.debug('Contract tx and owner', benchmark.elapsed()); benchmark.reset(); - const contractSrcTxId = forcedSrcTxId ? forcedSrcTxId : getTag(contractTx, WarpTags.CONTRACT_SRC_TX_ID); - const minFee = getTag(contractTx, WarpTags.MIN_FEE); + const contractSrcTxId = forcedSrcTxId ? forcedSrcTxId : getTag(contractTx, SmartWeaveTags.CONTRACT_SRC_TX_ID); + const minFee = getTag(contractTx, SmartWeaveTags.MIN_FEE); this.logger.debug('Tags decoding', benchmark.elapsed()); benchmark.reset(); const s = await this.evalInitialState(contractTx); @@ -99,11 +100,11 @@ export class ContractDefinitionLoader implements DefinitionLoader { let srcMetaData; if (contractType == 'wasm') { wasmSrc = new WasmSrc(src as Buffer); - srcWasmLang = getTag(contractSrcTx, WarpTags.WASM_LANG); + srcWasmLang = getTag(contractSrcTx, SmartWeaveTags.WASM_LANG); if (!srcWasmLang) { throw new Error(`Wasm lang not set for wasm contract src ${contractSrcTxId}`); } - srcMetaData = JSON.parse(getTag(contractSrcTx, WarpTags.WASM_META)); + srcMetaData = JSON.parse(getTag(contractSrcTx, SmartWeaveTags.WASM_META)); } this.logger.debug('Contract src tx load', benchmark.elapsed()); @@ -120,10 +121,10 @@ export class ContractDefinitionLoader implements DefinitionLoader { } private async evalInitialState(contractTx: Transaction): Promise { - if (getTag(contractTx, WarpTags.INIT_STATE)) { - return getTag(contractTx, WarpTags.INIT_STATE); - } else if (getTag(contractTx, WarpTags.INIT_STATE_TX)) { - const stateTX = getTag(contractTx, WarpTags.INIT_STATE_TX); + if (getTag(contractTx, SmartWeaveTags.INIT_STATE)) { + return getTag(contractTx, SmartWeaveTags.INIT_STATE); + } else if (getTag(contractTx, SmartWeaveTags.INIT_STATE_TX)) { + const stateTX = getTag(contractTx, SmartWeaveTags.INIT_STATE_TX); return this.arweaveWrapper.txDataString(stateTX); } else { return this.arweaveWrapper.txDataString(contractTx.id); diff --git a/src/core/modules/impl/TagsParser.ts b/src/core/modules/impl/TagsParser.ts index 0cd1687..a461670 100644 --- a/src/core/modules/impl/TagsParser.ts +++ b/src/core/modules/impl/TagsParser.ts @@ -1,4 +1,4 @@ -import { GQLEdgeInterface, GQLTagInterface, LoggerFactory, WarpTags } from '@warp'; +import { GQLEdgeInterface, GQLTagInterface, LoggerFactory, SmartWeaveTags } from '@warp'; /** * A class that is responsible for retrieving "input" tag from the interaction transaction. @@ -17,7 +17,7 @@ export class TagsParser { if (TagsParser.hasMultipleInteractions(interactionTransaction)) { this.logger.debug('Interaction transaction is using multiple input tx tag format.'); const contractTagIndex = interactionTransaction.node.tags.findIndex( - (tag) => tag.name === WarpTags.CONTRACT_TX_ID && tag.value === contractTxId + (tag) => tag.name === SmartWeaveTags.CONTRACT_TX_ID && tag.value === contractTxId ); // if "Contract" is the last tag if (interactionTransaction.node.tags.length - 1 === contractTagIndex) { @@ -27,7 +27,7 @@ export class TagsParser { // in this case the "Input" tag MUST be right after the "Contract" tag const inputTag = interactionTransaction.node.tags[contractTagIndex + 1]; // if the tag after "Contract" tag has wrong name - if (inputTag.name !== WarpTags.INPUT) { + if (inputTag.name !== SmartWeaveTags.INPUT) { this.logger.warn(`No 'Input' tag found after 'Contract' tag. Instead ${inputTag.name} was found`); return undefined; } @@ -37,28 +37,30 @@ export class TagsParser { // the "old way" - i.e. tags ordering does not matter, // if there is at most one "Contract" tag // - so returning the first occurrence of "Input" tag. - return interactionTransaction.node.tags.find((tag) => tag.name === WarpTags.INPUT); + return interactionTransaction.node.tags.find((tag) => tag.name === SmartWeaveTags.INPUT); } } isInteractWrite(interactionTransaction: GQLEdgeInterface, contractTxId: string): boolean { return interactionTransaction.node.tags.some( - (tag) => tag.name === WarpTags.INTERACT_WRITE && tag.value === contractTxId + (tag) => tag.name === SmartWeaveTags.INTERACT_WRITE && tag.value === contractTxId ); } getInteractWritesContracts(interactionTransaction: GQLEdgeInterface): string[] { - return interactionTransaction.node.tags.filter((tag) => tag.name === WarpTags.INTERACT_WRITE).map((t) => t.value); + return interactionTransaction.node.tags + .filter((tag) => tag.name === SmartWeaveTags.INTERACT_WRITE) + .map((t) => t.value); } getContractTag(interactionTransaction: GQLEdgeInterface): string { - return interactionTransaction.node.tags.find((tag) => tag.name === WarpTags.CONTRACT_TX_ID)?.value; + return interactionTransaction.node.tags.find((tag) => tag.name === SmartWeaveTags.CONTRACT_TX_ID)?.value; } getContractsWithInputs(interactionTransaction: GQLEdgeInterface): Map { const result = new Map(); - const contractTags = interactionTransaction.node.tags.filter((tag) => tag.name === WarpTags.CONTRACT_TX_ID); + const contractTags = interactionTransaction.node.tags.filter((tag) => tag.name === SmartWeaveTags.CONTRACT_TX_ID); contractTags.forEach((contractTag) => { result.set(contractTag.value, this.getInputTag(interactionTransaction, contractTag.value)); @@ -68,6 +70,6 @@ export class TagsParser { } static hasMultipleInteractions(interactionTransaction): boolean { - return interactionTransaction.node.tags.filter((tag) => tag.name === WarpTags.CONTRACT_TX_ID).length > 1; + return interactionTransaction.node.tags.filter((tag) => tag.name === SmartWeaveTags.CONTRACT_TX_ID).length > 1; } } diff --git a/src/core/modules/impl/WarpGatewayContractDefinitionLoader.ts b/src/core/modules/impl/WarpGatewayContractDefinitionLoader.ts index 961110b..5914ff4 100644 --- a/src/core/modules/impl/WarpGatewayContractDefinitionLoader.ts +++ b/src/core/modules/impl/WarpGatewayContractDefinitionLoader.ts @@ -1,4 +1,4 @@ -import { ContractDefinition, getTag, LoggerFactory, WarpTags, stripTrailingSlash, WarpCache } from '@warp'; +import { ContractDefinition, getTag, LoggerFactory, SmartWeaveTags, stripTrailingSlash, WarpCache } from '@warp'; import Arweave from 'arweave'; import { ContractDefinitionLoader } from './ContractDefinitionLoader'; import 'redstone-isomorphic'; @@ -53,7 +53,7 @@ export class WarpGatewayContractDefinitionLoader extends ContractDefinitionLoade } else { sourceTx = await this.arweaveWrapper.tx(result.srcTxId); } - const srcMetaData = JSON.parse(getTag(sourceTx, WarpTags.WASM_META)); + const srcMetaData = JSON.parse(getTag(sourceTx, SmartWeaveTags.WASM_META)); result.metadata = srcMetaData; } result.contractType = result.src ? 'js' : 'wasm'; diff --git a/src/legacy/create-tx.ts b/src/legacy/create-tx.ts index 7a1371e..980c42c 100644 --- a/src/legacy/create-tx.ts +++ b/src/legacy/create-tx.ts @@ -1,5 +1,5 @@ import Arweave from 'arweave'; -import { GQLNodeInterface, GQLTagInterface, SigningFunction, WarpTags } from '@warp'; +import { GQLNodeInterface, GQLTagInterface, SigningFunction, SmartWeaveTags } from '@warp'; import Transaction from 'arweave/node/lib/transaction'; import { CreateTransactionInterface } from 'arweave/node/common'; import { BlockData } from 'arweave/node/blocks'; @@ -45,12 +45,12 @@ export async function createTx( interactionTx.addTag(tag.name.toString(), tag.value.toString()); } } - interactionTx.addTag(WarpTags.APP_NAME, 'SmartWeaveAction'); + interactionTx.addTag(SmartWeaveTags.APP_NAME, 'SmartWeaveAction'); // use real SDK version here? - interactionTx.addTag(WarpTags.APP_VERSION, '0.3.0'); - interactionTx.addTag(WarpTags.SDK, 'Warp'); - interactionTx.addTag(WarpTags.CONTRACT_TX_ID, contractId); - interactionTx.addTag(WarpTags.INPUT, JSON.stringify(input)); + interactionTx.addTag(SmartWeaveTags.APP_VERSION, '0.3.0'); + interactionTx.addTag(SmartWeaveTags.SDK, 'Warp'); + interactionTx.addTag(SmartWeaveTags.CONTRACT_TX_ID, contractId); + interactionTx.addTag(SmartWeaveTags.INPUT, JSON.stringify(input)); if (signer) { await signer(interactionTx); diff --git a/src/legacy/errors.ts b/src/legacy/errors.ts index 87d1a5b..27f6cd8 100644 --- a/src/legacy/errors.ts +++ b/src/legacy/errors.ts @@ -1,13 +1,13 @@ -export const enum WarpErrorType { +export const enum SmartWeaveErrorType { CONTRACT_NOT_FOUND = 'CONTRACT_NOT_FOUND' } -export class WarpError extends Error { - public readonly type: WarpErrorType; +export class SmartWeaveError extends Error { + public readonly type: SmartWeaveErrorType; public readonly otherInfo: any; constructor( - type: WarpErrorType, + type: SmartWeaveErrorType, optional: { message?: string; requestedTxId?: string; @@ -22,7 +22,7 @@ export class WarpError extends Error { this.otherInfo = optional; } - public getType(): WarpErrorType { + public getType(): SmartWeaveErrorType { return this.type; } } diff --git a/src/plugins/Evolve.ts b/src/plugins/Evolve.ts index 452da70..3bb8d2d 100644 --- a/src/plugins/Evolve.ts +++ b/src/plugins/Evolve.ts @@ -6,8 +6,8 @@ import { ExecutorFactory, HandlerApi, LoggerFactory, - WarpError, - WarpErrorType + SmartWeaveError, + SmartWeaveErrorType } from '@warp'; /* @@ -89,7 +89,7 @@ export class Evolve implements ExecutionContextModifier { return executionContext; } catch (e) { - throw new WarpError(WarpErrorType.CONTRACT_NOT_FOUND, { + throw new SmartWeaveError(SmartWeaveErrorType.CONTRACT_NOT_FOUND, { message: `Contract having txId: ${contractTxId} not found`, requestedTxId: contractTxId }); diff --git a/tools/bundle.ts b/tools/bundle.ts index 1f066dc..a15c988 100644 --- a/tools/bundle.ts +++ b/tools/bundle.ts @@ -1,14 +1,11 @@ /* eslint-disable */ import Arweave from 'arweave'; -import { - LoggerFactory, - WarpNodeFactory -} from '../src'; +import { LoggerFactory, WarpNodeFactory } from '../src'; import { TsLogFactory } from '../src/logging/node/TsLogFactory'; -import path from "path"; -import knex from "knex"; -import fs from "fs"; -import {JWKInterface} from "arweave/node/lib/wallet"; +import path from 'path'; +import knex from 'knex'; +import fs from 'fs'; +import { JWKInterface } from 'arweave/node/lib/wallet'; const logger = LoggerFactory.INST.create('Contract'); @@ -28,7 +25,6 @@ async function main() { logging: false // Enable network request logging }); - const cacheDir = path.join(__dirname, 'db'); const knexConfig = knex({ client: 'sqlite3', @@ -46,13 +42,16 @@ async function main() { const initialState = fs.readFileSync(path.join(__dirname, 'data/js/token-pst.json'), 'utf8'); // case 1 - full deploy, js contract - const contractTxId = await warp.createContract.deploy({ - wallet, - initState: initialState, - src: jsContractSrc, - }, true); + const contractTxId = await warp.createContract.deploy( + { + wallet, + initState: initialState, + src: jsContractSrc + }, + true + ); - logger.info("tx id:", contractTxId); + logger.info('tx id:', contractTxId); // connecting to a given contract const token = warp @@ -61,25 +60,26 @@ async function main() { // calling "writeInteraction" without connecting to a wallet first will cause a runtime error. .connect(wallet); - const result = await token.bundleInteraction({ - function: "vrf", - }, {vrf: true}); + const result = await token.bundleInteraction( + { + function: 'vrf' + }, + { vrf: true } + ); - console.log(result); + const { state } = await token.readState(); - const {state} = await token.readState(); - - logger.info("State", state.vrf); + logger.info('State', state.vrf); /*const result = await token.writeInteraction({ function: "transfer", target: "33F0QHcb22W7LwWR1iRC8Az1ntZG09XQ03YWuw2ABqA", qty: 10 }, [{ - name: WarpTags.INTERACT_WRITE, + name: SmartWeaveTags.INTERACT_WRITE, value: "33F0QHcb22W7LwWR1iRC8Az1ntZG09XQ03YWuw2ABqA" },{ - name: WarpTags.INTERACT_WRITE, + name: SmartWeaveTags.INTERACT_WRITE, value: "4MnaOd-GvsE5iVQD4OhdY8DOrH3vo0QEqOw31HeIzQ0" } ]);*/ @@ -88,7 +88,6 @@ async function main() { //console.log(await redstoneLoader.load("33F0QHcb22W7LwWR1iRC8Az1ntZG09XQ03YWuw2ABqA", 0, 1_000_000)); - // UjZsNC0t5Ex7TjU8FIGLZcn_b3Af9OoNBuVmTAgp2_U /*const result1 = await token.readState(); @@ -111,8 +110,6 @@ async function main() { //await sleep(1); }*/ - - /*logger.info("Result from the sequencer", result); // the new transaction is instantly available - ie. during the state read operation @@ -123,7 +120,7 @@ async function main() { } function readJSON(path: string): JWKInterface { - const content = fs.readFileSync(path, "utf-8"); + const content = fs.readFileSync(path, 'utf-8'); try { return JSON.parse(content); } catch (e) { @@ -131,5 +128,4 @@ function readJSON(path: string): JWKInterface { } } - main().catch((e) => console.error(e));