From bfc1a7d425fee71d063e6414c54d78f3737c1707 Mon Sep 17 00:00:00 2001 From: boneyard93501 <4523011+boneyard93501@users.noreply.github.com> Date: Sun, 24 Oct 2021 13:51:02 -0500 Subject: [PATCH] reorg into node and client --- .../air-scripts}/.gitkeep | 0 .../demo_validation.get_all_validations.air | 0 .../demo_validation.get_record.air | 0 .../demo_validation.get_record_count.air | 0 .../demo_validation.get_records.air | 0 .../demo_validation.get_validation.air | 0 .../air-scripts}/demo_validation.ts | 0 .../air-scripts}/demo_validation.validate.air | 0 .../air-scripts}/snapshot.get_count.air | 0 .../air-scripts}/snapshot.get_record.air | 0 .../air-scripts}/snapshot.get_records.air | 0 .../air-scripts}/snapshot.validate.air | 0 .../snapshot.validate_from_url.air | 0 .../aqua}/demo_validation.aqua | 0 client-peer/package.json | 59 ++- client-peer/package.json.bk | 26 + client-peer/src/{index.ts => index.ts.bk} | 0 .../{tsconfig.json => tsconfig.json.bk} | 0 .gitignore => peer-node/.gitignore | 0 {aqua => peer-node/aqua}/snapshot.aqua | 0 {data => peer-node/data}/snapshot.db | Bin package.json => peer-node/package.json | 2 +- .../src}/_aqua/demo_validation.ts | 0 {src => peer-node/src}/_aqua/snapshot.ts | 0 peer-node/src/_aqua/snapshot.ts.bk | 495 ++++++++++++++++++ {src => peer-node/src}/eip_processor.ts | 0 {src => peer-node/src}/index.ts | 0 peer-node/src/index.ts.bk | 137 +++++ {src => peer-node/src}/local_db.ts | 0 {src => peer-node/src}/utils.ts | 0 tsconfig.json => peer-node/tsconfig.json | 0 31 files changed, 700 insertions(+), 19 deletions(-) rename {air-scripts => client-peer/air-scripts}/.gitkeep (100%) rename {air-scripts => client-peer/air-scripts}/demo_validation.get_all_validations.air (100%) rename {air-scripts => client-peer/air-scripts}/demo_validation.get_record.air (100%) rename {air-scripts => client-peer/air-scripts}/demo_validation.get_record_count.air (100%) rename {air-scripts => client-peer/air-scripts}/demo_validation.get_records.air (100%) rename {air-scripts => client-peer/air-scripts}/demo_validation.get_validation.air (100%) rename {air-scripts => client-peer/air-scripts}/demo_validation.ts (100%) rename {air-scripts => client-peer/air-scripts}/demo_validation.validate.air (100%) rename {air-scripts => client-peer/air-scripts}/snapshot.get_count.air (100%) rename {air-scripts => client-peer/air-scripts}/snapshot.get_record.air (100%) rename {air-scripts => client-peer/air-scripts}/snapshot.get_records.air (100%) rename {air-scripts => client-peer/air-scripts}/snapshot.validate.air (100%) rename {air-scripts => client-peer/air-scripts}/snapshot.validate_from_url.air (100%) rename {aqua => client-peer/aqua}/demo_validation.aqua (100%) create mode 100644 client-peer/package.json.bk rename client-peer/src/{index.ts => index.ts.bk} (100%) rename client-peer/{tsconfig.json => tsconfig.json.bk} (100%) rename .gitignore => peer-node/.gitignore (100%) rename {aqua => peer-node/aqua}/snapshot.aqua (100%) rename {data => peer-node/data}/snapshot.db (100%) rename package.json => peer-node/package.json (96%) rename {src => peer-node/src}/_aqua/demo_validation.ts (100%) rename {src => peer-node/src}/_aqua/snapshot.ts (100%) create mode 100644 peer-node/src/_aqua/snapshot.ts.bk rename {src => peer-node/src}/eip_processor.ts (100%) rename {src => peer-node/src}/index.ts (100%) create mode 100644 peer-node/src/index.ts.bk rename {src => peer-node/src}/local_db.ts (100%) rename {src => peer-node/src}/utils.ts (100%) rename tsconfig.json => peer-node/tsconfig.json (100%) diff --git a/air-scripts/.gitkeep b/client-peer/air-scripts/.gitkeep similarity index 100% rename from air-scripts/.gitkeep rename to client-peer/air-scripts/.gitkeep diff --git a/air-scripts/demo_validation.get_all_validations.air b/client-peer/air-scripts/demo_validation.get_all_validations.air similarity index 100% rename from air-scripts/demo_validation.get_all_validations.air rename to client-peer/air-scripts/demo_validation.get_all_validations.air diff --git a/air-scripts/demo_validation.get_record.air b/client-peer/air-scripts/demo_validation.get_record.air similarity index 100% rename from air-scripts/demo_validation.get_record.air rename to client-peer/air-scripts/demo_validation.get_record.air diff --git a/air-scripts/demo_validation.get_record_count.air b/client-peer/air-scripts/demo_validation.get_record_count.air similarity index 100% rename from air-scripts/demo_validation.get_record_count.air rename to client-peer/air-scripts/demo_validation.get_record_count.air diff --git a/air-scripts/demo_validation.get_records.air b/client-peer/air-scripts/demo_validation.get_records.air similarity index 100% rename from air-scripts/demo_validation.get_records.air rename to client-peer/air-scripts/demo_validation.get_records.air diff --git a/air-scripts/demo_validation.get_validation.air b/client-peer/air-scripts/demo_validation.get_validation.air similarity index 100% rename from air-scripts/demo_validation.get_validation.air rename to client-peer/air-scripts/demo_validation.get_validation.air diff --git a/air-scripts/demo_validation.ts b/client-peer/air-scripts/demo_validation.ts similarity index 100% rename from air-scripts/demo_validation.ts rename to client-peer/air-scripts/demo_validation.ts diff --git a/air-scripts/demo_validation.validate.air b/client-peer/air-scripts/demo_validation.validate.air similarity index 100% rename from air-scripts/demo_validation.validate.air rename to client-peer/air-scripts/demo_validation.validate.air diff --git a/air-scripts/snapshot.get_count.air b/client-peer/air-scripts/snapshot.get_count.air similarity index 100% rename from air-scripts/snapshot.get_count.air rename to client-peer/air-scripts/snapshot.get_count.air diff --git a/air-scripts/snapshot.get_record.air b/client-peer/air-scripts/snapshot.get_record.air similarity index 100% rename from air-scripts/snapshot.get_record.air rename to client-peer/air-scripts/snapshot.get_record.air diff --git a/air-scripts/snapshot.get_records.air b/client-peer/air-scripts/snapshot.get_records.air similarity index 100% rename from air-scripts/snapshot.get_records.air rename to client-peer/air-scripts/snapshot.get_records.air diff --git a/air-scripts/snapshot.validate.air b/client-peer/air-scripts/snapshot.validate.air similarity index 100% rename from air-scripts/snapshot.validate.air rename to client-peer/air-scripts/snapshot.validate.air diff --git a/air-scripts/snapshot.validate_from_url.air b/client-peer/air-scripts/snapshot.validate_from_url.air similarity index 100% rename from air-scripts/snapshot.validate_from_url.air rename to client-peer/air-scripts/snapshot.validate_from_url.air diff --git a/aqua/demo_validation.aqua b/client-peer/aqua/demo_validation.aqua similarity index 100% rename from aqua/demo_validation.aqua rename to client-peer/aqua/demo_validation.aqua diff --git a/client-peer/package.json b/client-peer/package.json index d32ee19..f3c47dd 100644 --- a/client-peer/package.json +++ b/client-peer/package.json @@ -1,26 +1,49 @@ { - "name": "snapshot-client", + "name": "snapshot-demo-client", "version": "0.1.0", - "description": "", - "main": "index.js", - "scripts": { - "start": "node -r ts-node/register src/index.ts", - "compile-aqua": "aqua -i ../aqua/demo_validation.aqua -o ./src/_aqua", - "watch-aqua": "chokidar \"**/*.aqua\" -c \"npm run compile-aqua\"" + "description": "Demo for JS PoC peer node", + "main": "./dist/src/index.js", + "typings": "./dist/src/index.d.ts", + "files": [ + "dist/*" + ], + "bic": [ + "client-peer/*", + "*.aqua", + "package-lock.json" + ], + "dependencies": { + "@fluencelabs/aqua-lib": "^0.1.14", + "@fluencelabs/fluence": "^0.14.2", + "@fluencelabs/fluence-network-environment": "^1.0.10", + "it-all": "^1.0.5" }, - "author": "", + "scripts": { + "compile-aqua": "aqua -i ../aqua-scripts -o src/_aqua/", + "prebuild": "npm run compile-aqua", + "build": "tsc", + "prestart:local": "npm run build", + "start:local": "node dist/src/index.js local", + "prestart:remote": "npm run build", + "start:remote": "node dist/src/index.js krasnodar", + "start": "npm run start:remote" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/fluencelabs/eip712-validation-node/tree/main/client-peer" + }, + "keywords": [ + "aqua", + "fluence" + ], + "author": "Fluence Labs", "license": "MIT", + "bugs": { + "url": "git+https://github.com/fluencelabs/eip712-validation-node/issues" + }, + "homepage": "git+https://github.com/fluencelabs/eip712-validation-node/blob/main/README.md", "devDependencies": { "@fluencelabs/aqua": "^0.4.0-235", - "chokidar-cli": "^3.0.0", - "ts-node": "^10.2.1", - "typescript": "^4.4.2" - }, - "dependencies": { - "@fluencelabs/fluence": "^0.14.2", - "@fluencelabs/fluence-network-environment": "1.0.10", - "@types/sqlite3": "^3.1.7", - "base64-js": "^1.5.1", - "got": "^11.8.2" + "typescript": "^4.0.0" } } diff --git a/client-peer/package.json.bk b/client-peer/package.json.bk new file mode 100644 index 0000000..d32ee19 --- /dev/null +++ b/client-peer/package.json.bk @@ -0,0 +1,26 @@ +{ + "name": "snapshot-client", + "version": "0.1.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "node -r ts-node/register src/index.ts", + "compile-aqua": "aqua -i ../aqua/demo_validation.aqua -o ./src/_aqua", + "watch-aqua": "chokidar \"**/*.aqua\" -c \"npm run compile-aqua\"" + }, + "author": "", + "license": "MIT", + "devDependencies": { + "@fluencelabs/aqua": "^0.4.0-235", + "chokidar-cli": "^3.0.0", + "ts-node": "^10.2.1", + "typescript": "^4.4.2" + }, + "dependencies": { + "@fluencelabs/fluence": "^0.14.2", + "@fluencelabs/fluence-network-environment": "1.0.10", + "@types/sqlite3": "^3.1.7", + "base64-js": "^1.5.1", + "got": "^11.8.2" + } +} diff --git a/client-peer/src/index.ts b/client-peer/src/index.ts.bk similarity index 100% rename from client-peer/src/index.ts rename to client-peer/src/index.ts.bk diff --git a/client-peer/tsconfig.json b/client-peer/tsconfig.json.bk similarity index 100% rename from client-peer/tsconfig.json rename to client-peer/tsconfig.json.bk diff --git a/.gitignore b/peer-node/.gitignore similarity index 100% rename from .gitignore rename to peer-node/.gitignore diff --git a/aqua/snapshot.aqua b/peer-node/aqua/snapshot.aqua similarity index 100% rename from aqua/snapshot.aqua rename to peer-node/aqua/snapshot.aqua diff --git a/data/snapshot.db b/peer-node/data/snapshot.db similarity index 100% rename from data/snapshot.db rename to peer-node/data/snapshot.db diff --git a/package.json b/peer-node/package.json similarity index 96% rename from package.json rename to peer-node/package.json index 3466e73..cd6d17b 100644 --- a/package.json +++ b/peer-node/package.json @@ -12,7 +12,7 @@ "license": "ISC", "devDependencies": { "@fluencelabs/aqua": "^0.4.0-235", - "chokidar-cli": "^3.0.0", + "chokidar-cli": "^1.2.0", "ts-node": "^10.2.1", "typescript": "^4.4.2" }, diff --git a/src/_aqua/demo_validation.ts b/peer-node/src/_aqua/demo_validation.ts similarity index 100% rename from src/_aqua/demo_validation.ts rename to peer-node/src/_aqua/demo_validation.ts diff --git a/src/_aqua/snapshot.ts b/peer-node/src/_aqua/snapshot.ts similarity index 100% rename from src/_aqua/snapshot.ts rename to peer-node/src/_aqua/snapshot.ts diff --git a/peer-node/src/_aqua/snapshot.ts.bk b/peer-node/src/_aqua/snapshot.ts.bk new file mode 100644 index 0000000..1397783 --- /dev/null +++ b/peer-node/src/_aqua/snapshot.ts.bk @@ -0,0 +1,495 @@ +/** + * + * This file is auto-generated. Do not edit manually: changes may be erased. + * Generated by Aqua compiler: https://github.com/fluencelabs/aqua/. + * If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues + * Aqua version: 0.4.0-235 + * + */ +import { Fluence, FluencePeer } from '@fluencelabs/fluence'; +import { + CallParams, + callFunction, + registerService, +} from '@fluencelabs/fluence/dist/internal/compilerSupport/v2'; + + +// Services + +export interface ProVoValidationDef { + eip712_validation_string: (eip_str: string, peer_id: string, callParams: CallParams<'eip_str' | 'peer_id'>) => string | Promise; +eip712_validation_url: (eip_str: string, peer_id: string, callParams: CallParams<'eip_str' | 'peer_id'>) => string | Promise; +} +export function registerProVoValidation(service: ProVoValidationDef): void; +export function registerProVoValidation(serviceId: string, service: ProVoValidationDef): void; +export function registerProVoValidation(peer: FluencePeer, service: ProVoValidationDef): void; +export function registerProVoValidation(peer: FluencePeer, serviceId: string, service: ProVoValidationDef): void; + + +export function registerProVoValidation(...args: any) { + registerService( + args, + { + "defaultServiceId" : "snapshot", + "functions" : [ + { + "functionName" : "eip712_validation_string", + "argDefs" : [ + { + "name" : "eip_str", + "argType" : { + "tag" : "primitive" + } + }, + { + "name" : "peer_id", + "argType" : { + "tag" : "primitive" + } + } + ], + "returnType" : { + "tag" : "primitive" + } + }, + { + "functionName" : "eip712_validation_url", + "argDefs" : [ + { + "name" : "eip_str", + "argType" : { + "tag" : "primitive" + } + }, + { + "name" : "peer_id", + "argType" : { + "tag" : "primitive" + } + } + ], + "returnType" : { + "tag" : "primitive" + } + } + ] +} + ); +} + + + +export interface DataProviderDef { + get_record: (snapshot_id: number, callParams: CallParams<'snapshot_id'>) => { snapshot_id: number; } | Promise<{ snapshot_id: number; }>; +get_records: (callParams: CallParams) => { snapshot_id: number; }[] | Promise<{ snapshot_id: number; }[]>; +} +export function registerDataProvider(service: DataProviderDef): void; +export function registerDataProvider(serviceId: string, service: DataProviderDef): void; +export function registerDataProvider(peer: FluencePeer, service: DataProviderDef): void; +export function registerDataProvider(peer: FluencePeer, serviceId: string, service: DataProviderDef): void; + + +export function registerDataProvider(...args: any) { + registerService( + args, + { + "defaultServiceId" : "snapshot", + "functions" : [ + { + "functionName" : "get_record", + "argDefs" : [ + { + "name" : "snapshot_id", + "argType" : { + "tag" : "primitive" + } + } + ], + "returnType" : { + "tag" : "primitive" + } + }, + { + "functionName" : "get_records", + "argDefs" : [ + ], + "returnType" : { + "tag" : "primitive" + } + } + ] +} + ); +} + +// Functions + + +export function validate(relay: string, peer_: string, eip712_json: string, config?: {ttl?: number}): Promise; +export function validate(peer: FluencePeer, relay: string, peer_: string, eip712_json: string, config?: {ttl?: number}): Promise; +export function validate(...args: any) { + + let script = ` + (xor + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) + (call %init_peer_id% ("getDataSrv" "relay") [] relay) + ) + (call %init_peer_id% ("getDataSrv" "peer") [] peer) + ) + (call %init_peer_id% ("getDataSrv" "eip712_json") [] eip712_json) + ) + (call -relay- ("op" "noop") []) + ) + (call relay ("op" "noop") []) + ) + (xor + (call peer ("snapshot" "eip712_validation_string") [eip712_json peer] result) + (seq + (seq + (seq + (call relay ("op" "noop") []) + (call -relay- ("op" "noop") []) + ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) + ) + (call -relay- ("op" "noop") []) + ) + ) + ) + (call relay ("op" "noop") []) + ) + (call -relay- ("op" "noop") []) + ) + (xor + (call %init_peer_id% ("callbackSrv" "response") [result]) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + ) + ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) + ) + ` + return callFunction( + args, + { + "functionName" : "validate", + "returnType" : { + "tag" : "primitive" + }, + "argDefs" : [ + { + "name" : "relay", + "argType" : { + "tag" : "primitive" + } + }, + { + "name" : "peer", + "argType" : { + "tag" : "primitive" + } + }, + { + "name" : "eip712_json", + "argType" : { + "tag" : "primitive" + } + } + ], + "names" : { + "relay" : "-relay-", + "getDataSrv" : "getDataSrv", + "callbackSrv" : "callbackSrv", + "responseSrv" : "callbackSrv", + "responseFnName" : "response", + "errorHandlingSrv" : "errorHandlingSrv", + "errorFnName" : "error" + } +}, + script + ) +} + + + +export function validate_from_url(relay: string, peer_: string, eip712_url: string, config?: {ttl?: number}): Promise; +export function validate_from_url(peer: FluencePeer, relay: string, peer_: string, eip712_url: string, config?: {ttl?: number}): Promise; +export function validate_from_url(...args: any) { + + let script = ` + (xor + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) + (call %init_peer_id% ("getDataSrv" "relay") [] relay) + ) + (call %init_peer_id% ("getDataSrv" "peer") [] peer) + ) + (call %init_peer_id% ("getDataSrv" "eip712_url") [] eip712_url) + ) + (call -relay- ("op" "noop") []) + ) + (call relay ("op" "noop") []) + ) + (xor + (call peer ("snapshot" "eip712_validation_url") [eip712_url peer] result) + (seq + (seq + (seq + (call relay ("op" "noop") []) + (call -relay- ("op" "noop") []) + ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) + ) + (call -relay- ("op" "noop") []) + ) + ) + ) + (call relay ("op" "noop") []) + ) + (call -relay- ("op" "noop") []) + ) + (xor + (call %init_peer_id% ("callbackSrv" "response") [result]) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + ) + ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) + ) + ` + return callFunction( + args, + { + "functionName" : "validate_from_url", + "returnType" : { + "tag" : "primitive" + }, + "argDefs" : [ + { + "name" : "relay", + "argType" : { + "tag" : "primitive" + } + }, + { + "name" : "peer", + "argType" : { + "tag" : "primitive" + } + }, + { + "name" : "eip712_url", + "argType" : { + "tag" : "primitive" + } + } + ], + "names" : { + "relay" : "-relay-", + "getDataSrv" : "getDataSrv", + "callbackSrv" : "callbackSrv", + "responseSrv" : "callbackSrv", + "responseFnName" : "response", + "errorHandlingSrv" : "errorHandlingSrv", + "errorFnName" : "error" + } +}, + script + ) +} + + +export type Get_recordResult = { snapshot_id: number; } +export function get_record(relay: string, peer_: string, snapshot_id: number, config?: {ttl?: number}): Promise; +export function get_record(peer: FluencePeer, relay: string, peer_: string, snapshot_id: number, config?: {ttl?: number}): Promise; +export function get_record(...args: any) { + + let script = ` + (xor + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) + (call %init_peer_id% ("getDataSrv" "relay") [] relay) + ) + (call %init_peer_id% ("getDataSrv" "peer") [] peer) + ) + (call %init_peer_id% ("getDataSrv" "snapshot_id") [] snapshot_id) + ) + (call -relay- ("op" "noop") []) + ) + (call relay ("op" "noop") []) + ) + (xor + (call peer ("snapshot" "get_record") [snapshot_id] result) + (seq + (seq + (seq + (call relay ("op" "noop") []) + (call -relay- ("op" "noop") []) + ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) + ) + (call -relay- ("op" "noop") []) + ) + ) + ) + (call relay ("op" "noop") []) + ) + (call -relay- ("op" "noop") []) + ) + (xor + (call %init_peer_id% ("callbackSrv" "response") [result]) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + ) + ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) + ) + ` + return callFunction( + args, + { + "functionName" : "get_record", + "returnType" : { + "tag" : "primitive" + }, + "argDefs" : [ + { + "name" : "relay", + "argType" : { + "tag" : "primitive" + } + }, + { + "name" : "peer", + "argType" : { + "tag" : "primitive" + } + }, + { + "name" : "snapshot_id", + "argType" : { + "tag" : "primitive" + } + } + ], + "names" : { + "relay" : "-relay-", + "getDataSrv" : "getDataSrv", + "callbackSrv" : "callbackSrv", + "responseSrv" : "callbackSrv", + "responseFnName" : "response", + "errorHandlingSrv" : "errorHandlingSrv", + "errorFnName" : "error" + } +}, + script + ) +} + + + +export function get_records(relay: string, peer_: string, config?: {ttl?: number}): Promise<{ snapshot_id: number; }[]>; +export function get_records(peer: FluencePeer, relay: string, peer_: string, config?: {ttl?: number}): Promise<{ snapshot_id: number; }[]>; +export function get_records(...args: any) { + + let script = ` + (xor + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) + (call %init_peer_id% ("getDataSrv" "relay") [] relay) + ) + (call %init_peer_id% ("getDataSrv" "peer") [] peer) + ) + (call -relay- ("op" "noop") []) + ) + (call relay ("op" "noop") []) + ) + (xor + (call peer ("snapshot" "get_records") [] result) + (seq + (seq + (seq + (call relay ("op" "noop") []) + (call -relay- ("op" "noop") []) + ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) + ) + (call -relay- ("op" "noop") []) + ) + ) + ) + (call relay ("op" "noop") []) + ) + (call -relay- ("op" "noop") []) + ) + (xor + (call %init_peer_id% ("callbackSrv" "response") [result]) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + ) + ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) + ) + ` + return callFunction( + args, + { + "functionName" : "get_records", + "returnType" : { + "tag" : "primitive" + }, + "argDefs" : [ + { + "name" : "relay", + "argType" : { + "tag" : "primitive" + } + }, + { + "name" : "peer", + "argType" : { + "tag" : "primitive" + } + } + ], + "names" : { + "relay" : "-relay-", + "getDataSrv" : "getDataSrv", + "callbackSrv" : "callbackSrv", + "responseSrv" : "callbackSrv", + "responseFnName" : "response", + "errorHandlingSrv" : "errorHandlingSrv", + "errorFnName" : "error" + } +}, + script + ) +} diff --git a/src/eip_processor.ts b/peer-node/src/eip_processor.ts similarity index 100% rename from src/eip_processor.ts rename to peer-node/src/eip_processor.ts diff --git a/src/index.ts b/peer-node/src/index.ts similarity index 100% rename from src/index.ts rename to peer-node/src/index.ts diff --git a/peer-node/src/index.ts.bk b/peer-node/src/index.ts.bk new file mode 100644 index 0000000..bfb0ccb --- /dev/null +++ b/peer-node/src/index.ts.bk @@ -0,0 +1,137 @@ +import { Fluence, KeyPair } from "@fluencelabs/fluence"; +import { krasnodar } from "@fluencelabs/fluence-network-environment"; +import { registerEIPValidator, EIPValidatorDef, registerDataProvider, DataProviderDef } from "./_aqua/snapshot"; +import { ethers } from "ethers"; +import { TypedDataUtils } from 'ethers-eip712'; // https://github.com/0xsequence/ethers-eip712 +import { eip_validation, Response } from "./eip_processor"; +import { get_db, create_table, insert_event, DBRecord, DBResult, select_events, select_event } from './local_db'; +import got from 'got'; +import { base64 } from "ethers/lib/utils"; + + +// Arbitrary secret key that could be read from file, CLI arg or db +// We derive both the PeerId and the (ethers) wallet from this key +const SecretKey = "0x0123456789012345678901234567890123456789012345678901234567890123"; +const DB_PATH = "./data/snapshot.db"; + + +function create_wallet(sk: string): ethers.Wallet { + return new ethers.Wallet(sk); +} + +function sign_response(wallet: ethers.Wallet, response: Response): Promise { + const signed_msg = wallet.signMessage(JSON.stringify(response)); + return signed_msg; +} + +// class exposed as service `EIPValidation` in snapshot.aqua +class EIPValidator implements EIPValidatorDef { + + async eip712_validation_string(eip712_json: string): Promise { + // todo: need to fix this to use local peer key + const wallet = create_wallet(SecretKey); + let response = eip_validation(eip712_json, wallet.address); + + const resp_str = JSON.stringify(response); + console.log("eip validation response: ", resp_str); + + const signed_response = await wallet.signMessage(resp_str); + console.log("signed response: ", signed_response); + + // verify test + // const address = ethers.utils.verifyMessage(resp_str, signed_response); + // console.log("verify signature. peer_id: ", peer_id, " verified addr: ", address, " equal: ", peer_id === address); + + // console.log(resp_str); + let obj = { "signature": signed_response, "validation": response }; + + return JSON.stringify(obj); + } + + async eip712_validation_url(eip712_url: string): Promise { + + const eip = await got.get('https://ipfs.fleek.co/ipfs/QmWGzSQFm57ohEq2ATw4UNHWmYU2HkMjtedcNLodYywpmS'); + const eip_json = eip.body; + + // todo: need to fix this to use local peer key + const wallet = create_wallet(SecretKey); + let response = eip_validation(eip_json, wallet.address); + + const resp_str = JSON.stringify(response); + const signed_response = await wallet.signMessage(resp_str); + + + // verify test + // const address = ethers.utils.verifyMessage(resp_str, signed_response); + // console.log("verify signature. peer_id: ", peer_id, " verified addr: ", address, " equal: ", peer_id === address); + + // console.log(resp_str); + + let obj = { "signature": signed_response, "validation": response }; + + // commit to local sqlite + let db = get_db(DB_PATH); + await create_table(db); + await insert_event(db, JSON.parse(eip_json), response, signed_response); + + return JSON.stringify(obj); + } + +} +// class exposed as service `DataProviderDef` in snapshot.aqua +class DataProvider implements DataProviderDef { + + async get_record(snapshot_id: number): Promise { + return select_event(snapshot_id); + + } + + async get_records(): Promise { + // todo: add pagination + const result = await select_events(); + console.log("get records: ", result); + return result; + } +} + + +async function startFluencePeer(skBytes: Uint8Array): Promise { + await Fluence.start({ + connectTo: krasnodar[0], + KeyPair: await KeyPair.fromEd25519SK(skBytes) + }); +} + +async function main() { + + let wallet = new ethers.Wallet(SecretKey); + console.log("wallet from sk: ", wallet.address); + console.log("wallet pk: ", wallet.publicKey); + + const skBytes: Uint8Array = ethers.utils.arrayify(SecretKey); + console.log("arrayify: ", skBytes); + + await startFluencePeer(skBytes); + + + console.log("PeerId: ", Fluence.getStatus().peerId); + console.log("Relay id: ", Fluence.getStatus().relayPeerId); + + // let peer = Fluence.getPeer(); + // console.log(peer); + // console.log(Fluence.KeyPair); + + registerEIPValidator("EIPValidator", new EIPValidator()); + registerDataProvider("DataProvider", new DataProvider); + + // const eip_doc: any = await got('https://ipfs.fleek.co/ipfs/QmWGzSQFm57ohEq2ATw4UNHWmYU2HkMjtedcNLodYywpmS').json(); + // console.log("eip json obj: ", eip_doc); + + // let obj = new EIPValidator(); + // let result = obj.eip712_validation_url(JSON.stringify(eip_doc)); + // console.log("result: ", result); + + // await Fluence.stop(); +} + +main(); \ No newline at end of file diff --git a/src/local_db.ts b/peer-node/src/local_db.ts similarity index 100% rename from src/local_db.ts rename to peer-node/src/local_db.ts diff --git a/src/utils.ts b/peer-node/src/utils.ts similarity index 100% rename from src/utils.ts rename to peer-node/src/utils.ts diff --git a/tsconfig.json b/peer-node/tsconfig.json similarity index 100% rename from tsconfig.json rename to peer-node/tsconfig.json