diff --git a/air-scripts/demo_validation.get_all_validations.air b/air-scripts/demo_validation.get_all_validations.air new file mode 100644 index 0000000..f5965de --- /dev/null +++ b/air-scripts/demo_validation.get_all_validations.air @@ -0,0 +1,43 @@ +(xor + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) + (call %init_peer_id% ("getDataSrv" "node") [] node) + ) + (call %init_peer_id% ("getDataSrv" "relay") [] relay) + ) + (call -relay- ("op" "noop") []) + ) + (call relay ("op" "noop") []) + ) + (xor + (call node ("DataProvider" "get_records") [] res) + (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") [res]) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + ) + ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) +) diff --git a/air-scripts/demo_validation.get_record.air b/air-scripts/demo_validation.get_record.air new file mode 100644 index 0000000..e81063d --- /dev/null +++ b/air-scripts/demo_validation.get_record.air @@ -0,0 +1,46 @@ +(xor + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) + (call %init_peer_id% ("getDataSrv" "snapshot_id") [] snapshot_id) + ) + (call %init_peer_id% ("getDataSrv" "node") [] node) + ) + (call %init_peer_id% ("getDataSrv" "relay") [] relay) + ) + (call -relay- ("op" "noop") []) + ) + (call relay ("op" "noop") []) + ) + (xor + (call node ("DataProvider" "get_record") [snapshot_id] res) + (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") [res]) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + ) + ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) +) diff --git a/air-scripts/demo_validation.get_record_count.air b/air-scripts/demo_validation.get_record_count.air new file mode 100644 index 0000000..cc3e685 --- /dev/null +++ b/air-scripts/demo_validation.get_record_count.air @@ -0,0 +1,43 @@ +(xor + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) + (call %init_peer_id% ("getDataSrv" "node") [] node) + ) + (call %init_peer_id% ("getDataSrv" "relay") [] relay) + ) + (call -relay- ("op" "noop") []) + ) + (call relay ("op" "noop") []) + ) + (xor + (call node ("DataProvider" "get_record_count") [] res) + (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") [res]) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + ) + ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) +) diff --git a/air-scripts/demo_validation.get_records.air b/air-scripts/demo_validation.get_records.air new file mode 100644 index 0000000..f5965de --- /dev/null +++ b/air-scripts/demo_validation.get_records.air @@ -0,0 +1,43 @@ +(xor + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) + (call %init_peer_id% ("getDataSrv" "node") [] node) + ) + (call %init_peer_id% ("getDataSrv" "relay") [] relay) + ) + (call -relay- ("op" "noop") []) + ) + (call relay ("op" "noop") []) + ) + (xor + (call node ("DataProvider" "get_records") [] res) + (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") [res]) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + ) + ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) +) diff --git a/air-scripts/demo_validation.get_validation.air b/air-scripts/demo_validation.get_validation.air new file mode 100644 index 0000000..e81063d --- /dev/null +++ b/air-scripts/demo_validation.get_validation.air @@ -0,0 +1,46 @@ +(xor + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) + (call %init_peer_id% ("getDataSrv" "snapshot_id") [] snapshot_id) + ) + (call %init_peer_id% ("getDataSrv" "node") [] node) + ) + (call %init_peer_id% ("getDataSrv" "relay") [] relay) + ) + (call -relay- ("op" "noop") []) + ) + (call relay ("op" "noop") []) + ) + (xor + (call node ("DataProvider" "get_record") [snapshot_id] res) + (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") [res]) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + ) + ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) +) diff --git a/air-scripts/demo_validation.ts b/air-scripts/demo_validation.ts new file mode 100644 index 0000000..bf245a6 --- /dev/null +++ b/air-scripts/demo_validation.ts @@ -0,0 +1,400 @@ +/** + * + * 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" : "EIPValidator", + "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" : "DataProvider", + "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(eip712_url: string, node: string, relay: string, config?: {ttl?: number}): Promise; +export function validate(peer: FluencePeer, eip712_url: string, node: string, relay: 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" "eip712_url") [] eip712_url) + ) + (call %init_peer_id% ("getDataSrv" "node") [] node) + ) + (call %init_peer_id% ("getDataSrv" "relay") [] relay) + ) + (call -relay- ("op" "noop") []) + ) + (call relay ("op" "noop") []) + ) + (xor + (call node ("EIPValidator" "eip712_validation_url") [eip712_url node] res) + (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") [res]) + (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" : "eip712_url", + "argType" : { + "tag" : "primitive" + } + }, + { + "name" : "node", + "argType" : { + "tag" : "primitive" + } + }, + { + "name" : "relay", + "argType" : { + "tag" : "primitive" + } + } + ], + "names" : { + "relay" : "-relay-", + "getDataSrv" : "getDataSrv", + "callbackSrv" : "callbackSrv", + "responseSrv" : "callbackSrv", + "responseFnName" : "response", + "errorHandlingSrv" : "errorHandlingSrv", + "errorFnName" : "error" + } +}, + script + ) +} + + + +export function get_all_validations(node: string, relay: string, config?: {ttl?: number}): Promise<{ snapshot_id: number; }[]>; +export function get_all_validations(peer: FluencePeer, node: string, relay: string, config?: {ttl?: number}): Promise<{ snapshot_id: number; }[]>; +export function get_all_validations(...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" "node") [] node) + ) + (call %init_peer_id% ("getDataSrv" "relay") [] relay) + ) + (call -relay- ("op" "noop") []) + ) + (call relay ("op" "noop") []) + ) + (xor + (call node ("DataProvider" "get_records") [] res) + (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") [res]) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + ) + ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) + ) + ` + return callFunction( + args, + { + "functionName" : "get_all_validations", + "returnType" : { + "tag" : "primitive" + }, + "argDefs" : [ + { + "name" : "node", + "argType" : { + "tag" : "primitive" + } + }, + { + "name" : "relay", + "argType" : { + "tag" : "primitive" + } + } + ], + "names" : { + "relay" : "-relay-", + "getDataSrv" : "getDataSrv", + "callbackSrv" : "callbackSrv", + "responseSrv" : "callbackSrv", + "responseFnName" : "response", + "errorHandlingSrv" : "errorHandlingSrv", + "errorFnName" : "error" + } +}, + script + ) +} + + +export type Get_validationResult = { snapshot_id: number; } +export function get_validation(snapshot_id: number, node: string, relay: string, config?: {ttl?: number}): Promise; +export function get_validation(peer: FluencePeer, snapshot_id: number, node: string, relay: string, config?: {ttl?: number}): Promise; +export function get_validation(...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" "snapshot_id") [] snapshot_id) + ) + (call %init_peer_id% ("getDataSrv" "node") [] node) + ) + (call %init_peer_id% ("getDataSrv" "relay") [] relay) + ) + (call -relay- ("op" "noop") []) + ) + (call relay ("op" "noop") []) + ) + (xor + (call node ("DataProvider" "get_record") [snapshot_id] res) + (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") [res]) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + ) + ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) + ) + ` + return callFunction( + args, + { + "functionName" : "get_validation", + "returnType" : { + "tag" : "primitive" + }, + "argDefs" : [ + { + "name" : "snapshot_id", + "argType" : { + "tag" : "primitive" + } + }, + { + "name" : "node", + "argType" : { + "tag" : "primitive" + } + }, + { + "name" : "relay", + "argType" : { + "tag" : "primitive" + } + } + ], + "names" : { + "relay" : "-relay-", + "getDataSrv" : "getDataSrv", + "callbackSrv" : "callbackSrv", + "responseSrv" : "callbackSrv", + "responseFnName" : "response", + "errorHandlingSrv" : "errorHandlingSrv", + "errorFnName" : "error" + } +}, + script + ) +} diff --git a/air-scripts/demo_validation.validate.air b/air-scripts/demo_validation.validate.air new file mode 100644 index 0000000..7d219f9 --- /dev/null +++ b/air-scripts/demo_validation.validate.air @@ -0,0 +1,46 @@ +(xor + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (seq + (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) + (call %init_peer_id% ("getDataSrv" "eip712_url") [] eip712_url) + ) + (call %init_peer_id% ("getDataSrv" "node") [] node) + ) + (call %init_peer_id% ("getDataSrv" "relay") [] relay) + ) + (call -relay- ("op" "noop") []) + ) + (call relay ("op" "noop") []) + ) + (xor + (call node ("EIPValidator" "eip712_validation_url") [eip712_url node] res) + (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") [res]) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + ) + ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) +) diff --git a/air-scripts/snapshot.get_count.air b/air-scripts/snapshot.get_count.air new file mode 100644 index 0000000..091b210 --- /dev/null +++ b/air-scripts/snapshot.get_count.air @@ -0,0 +1,43 @@ +(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_record_count") [] 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]) +) diff --git a/air-scripts/snapshot.get_record.air b/air-scripts/snapshot.get_record.air new file mode 100644 index 0000000..d7ea67d --- /dev/null +++ b/air-scripts/snapshot.get_record.air @@ -0,0 +1,46 @@ +(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]) +) diff --git a/air-scripts/snapshot.get_records.air b/air-scripts/snapshot.get_records.air new file mode 100644 index 0000000..66af64e --- /dev/null +++ b/air-scripts/snapshot.get_records.air @@ -0,0 +1,43 @@ +(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]) +) diff --git a/air-scripts/snapshot.validate.air b/air-scripts/snapshot.validate.air new file mode 100644 index 0000000..c6e4643 --- /dev/null +++ b/air-scripts/snapshot.validate.air @@ -0,0 +1,46 @@ +(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]) +) diff --git a/air-scripts/snapshot.validate_from_url.air b/air-scripts/snapshot.validate_from_url.air new file mode 100644 index 0000000..6969023 --- /dev/null +++ b/air-scripts/snapshot.validate_from_url.air @@ -0,0 +1,46 @@ +(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]) +) diff --git a/aqua/demo_validation.aqua b/aqua/demo_validation.aqua index 40f6936..ed227ee 100644 --- a/aqua/demo_validation.aqua +++ b/aqua/demo_validation.aqua @@ -1,32 +1,52 @@ -data PVResponse: +data DBRecord: + snapshot_id: u64 + event_address: string + event_signature: string + eip712_doc: string peer_id: string timestamp: u64 eip_validation: bool ts_validation: bool + signed_response: string -data DBResponse: - snapshot_id: u64 +data DBResult: + stderr: string + stdout: []DBRecord -service ProVoValidation("EIPValidator"): +service EIPValidator("EIPValidator"): eip712_validation_string(eip_str: string, peer_id: string) -> string eip712_validation_url(eip_str: string, peer_id: string) -> string service DataProvider("DataProvider"): - get_records() -> []DBResponse - get_record(snapshot_id: u64) -> DBResponse + get_records() -> DBResult + get_record(snapshot_id: u64) -> DBResult + get_record_count() -> u64 + clear_table(password: string) -> DBResult func validate(eip712_url: string, node: string, relay:string) -> string: on node via relay: - res <- ProVoValidation.eip712_validation_url(eip712_url, node) + res <- EIPValidator.eip712_validation_url(eip712_url, node) <- res -func get_all_validations(node: string, relay:string) -> []DBResponse: +func get_records(node: string, relay:string) -> DBResult: on node via relay: res <- DataProvider.get_records() <- res -func get_validation(snapshot_id: u64, node: string, relay:string) -> DBResponse: +func get_record(snapshot_id: u64, node: string, relay:string) -> DBResult: on node via relay: res <- DataProvider.get_record(snapshot_id) - <- res \ No newline at end of file + <- res + +func get_record_count(node: string, relay:string) -> u64: + on node via relay: + res <- DataProvider.get_record_count() + <- res + +func delete_rows(password: string, node: string, relay:string) -> DBResult: + on node via relay: + result <- DataProvider.clear_table(password) + <- result + + diff --git a/aqua/snapshot.aqua b/aqua/snapshot.aqua index 6ca2908..e329b6b 100644 --- a/aqua/snapshot.aqua +++ b/aqua/snapshot.aqua @@ -27,7 +27,8 @@ service EIPValidator("snapshot"): service DataProvider("snapshot"): get_records() -> DBResult get_record(snapshot_id: u64) -> DBResult - + get_record_count() -> u64 + clear_table(password: string) -> DBResult func validate(relay: string, peer:string, eip712_json: string) -> string: on peer via relay: @@ -51,4 +52,12 @@ func get_records(relay:string, peer:string) -> DBResult: result <- DataProvider.get_records() <- result +func get_count(relay:string, peer:string) -> u64: + on peer via relay: + result <- DataProvider.get_record_count() + <- result +func delete_rows(passwd: string, peer: string, relay:string) -> DBResult: + on peer via relay: + result <- DataProvider.clear_table(passwd) + <- result \ No newline at end of file diff --git a/src/_aqua/demo_validation.ts b/src/_aqua/demo_validation.ts index bf245a6..5712f9e 100644 --- a/src/_aqua/demo_validation.ts +++ b/src/_aqua/demo_validation.ts @@ -16,17 +16,17 @@ import { // Services -export interface ProVoValidationDef { +export interface EIPValidatorDef { 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 registerEIPValidator(service: EIPValidatorDef): void; +export function registerEIPValidator(serviceId: string, service: EIPValidatorDef): void; +export function registerEIPValidator(peer: FluencePeer, service: EIPValidatorDef): void; +export function registerEIPValidator(peer: FluencePeer, serviceId: string, service: EIPValidatorDef): void; -export function registerProVoValidation(...args: any) { +export function registerEIPValidator(...args: any) { registerService( args, { @@ -80,8 +80,10 @@ export function registerProVoValidation(...args: any) { 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; }[]>; + clear_table: (password: string, callParams: CallParams<'password'>) => { stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; event_signature: string; peer_id: string; signed_response: string; snapshot_id: number; timestamp: number; ts_validation: boolean; }[]; } | Promise<{ stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; event_signature: string; peer_id: string; signed_response: string; snapshot_id: number; timestamp: number; ts_validation: boolean; }[]; }>; +get_record: (snapshot_id: number, callParams: CallParams<'snapshot_id'>) => { stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; event_signature: string; peer_id: string; signed_response: string; snapshot_id: number; timestamp: number; ts_validation: boolean; }[]; } | Promise<{ stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; event_signature: string; peer_id: string; signed_response: string; snapshot_id: number; timestamp: number; ts_validation: boolean; }[]; }>; +get_record_count: (callParams: CallParams) => number | Promise; +get_records: (callParams: CallParams) => { stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; event_signature: string; peer_id: string; signed_response: string; snapshot_id: number; timestamp: number; ts_validation: boolean; }[]; } | Promise<{ stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; event_signature: string; peer_id: string; signed_response: string; snapshot_id: number; timestamp: number; ts_validation: boolean; }[]; }>; } export function registerDataProvider(service: DataProviderDef): void; export function registerDataProvider(serviceId: string, service: DataProviderDef): void; @@ -95,6 +97,20 @@ export function registerDataProvider(...args: any) { { "defaultServiceId" : "DataProvider", "functions" : [ + { + "functionName" : "clear_table", + "argDefs" : [ + { + "name" : "password", + "argType" : { + "tag" : "primitive" + } + } + ], + "returnType" : { + "tag" : "primitive" + } + }, { "functionName" : "get_record", "argDefs" : [ @@ -109,6 +125,14 @@ export function registerDataProvider(...args: any) { "tag" : "primitive" } }, + { + "functionName" : "get_record_count", + "argDefs" : [ + ], + "returnType" : { + "tag" : "primitive" + } + }, { "functionName" : "get_records", "argDefs" : [ @@ -124,6 +148,196 @@ export function registerDataProvider(...args: any) { // Functions +export type Delete_rowsResult = { stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; event_signature: string; peer_id: string; signed_response: string; snapshot_id: number; timestamp: number; ts_validation: boolean; }[]; } +export function delete_rows(password: string, node: string, relay: string, config?: {ttl?: number}): Promise; +export function delete_rows(peer: FluencePeer, password: string, node: string, relay: string, config?: {ttl?: number}): Promise; +export function delete_rows(...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" "password") [] password) + ) + (call %init_peer_id% ("getDataSrv" "node") [] node) + ) + (call %init_peer_id% ("getDataSrv" "relay") [] relay) + ) + (call -relay- ("op" "noop") []) + ) + (call relay ("op" "noop") []) + ) + (xor + (call node ("DataProvider" "clear_table") [password] 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" : "delete_rows", + "returnType" : { + "tag" : "primitive" + }, + "argDefs" : [ + { + "name" : "password", + "argType" : { + "tag" : "primitive" + } + }, + { + "name" : "node", + "argType" : { + "tag" : "primitive" + } + }, + { + "name" : "relay", + "argType" : { + "tag" : "primitive" + } + } + ], + "names" : { + "relay" : "-relay-", + "getDataSrv" : "getDataSrv", + "callbackSrv" : "callbackSrv", + "responseSrv" : "callbackSrv", + "responseFnName" : "response", + "errorHandlingSrv" : "errorHandlingSrv", + "errorFnName" : "error" + } +}, + script + ) +} + + +export type Get_recordResult = { stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; event_signature: string; peer_id: string; signed_response: string; snapshot_id: number; timestamp: number; ts_validation: boolean; }[]; } +export function get_record(snapshot_id: number, node: string, relay: string, config?: {ttl?: number}): Promise; +export function get_record(peer: FluencePeer, snapshot_id: number, node: string, relay: string, 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" "snapshot_id") [] snapshot_id) + ) + (call %init_peer_id% ("getDataSrv" "node") [] node) + ) + (call %init_peer_id% ("getDataSrv" "relay") [] relay) + ) + (call -relay- ("op" "noop") []) + ) + (call relay ("op" "noop") []) + ) + (xor + (call node ("DataProvider" "get_record") [snapshot_id] res) + (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") [res]) + (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" : "snapshot_id", + "argType" : { + "tag" : "primitive" + } + }, + { + "name" : "node", + "argType" : { + "tag" : "primitive" + } + }, + { + "name" : "relay", + "argType" : { + "tag" : "primitive" + } + } + ], + "names" : { + "relay" : "-relay-", + "getDataSrv" : "getDataSrv", + "callbackSrv" : "callbackSrv", + "responseSrv" : "callbackSrv", + "responseFnName" : "response", + "errorHandlingSrv" : "errorHandlingSrv", + "errorFnName" : "error" + } +}, + script + ) +} + + export function validate(eip712_url: string, node: string, relay: string, config?: {ttl?: number}): Promise; export function validate(peer: FluencePeer, eip712_url: string, node: string, relay: string, config?: {ttl?: number}): Promise; @@ -220,9 +434,95 @@ export function validate(...args: any) { -export function get_all_validations(node: string, relay: string, config?: {ttl?: number}): Promise<{ snapshot_id: number; }[]>; -export function get_all_validations(peer: FluencePeer, node: string, relay: string, config?: {ttl?: number}): Promise<{ snapshot_id: number; }[]>; -export function get_all_validations(...args: any) { +export function get_record_count(node: string, relay: string, config?: {ttl?: number}): Promise; +export function get_record_count(peer: FluencePeer, node: string, relay: string, config?: {ttl?: number}): Promise; +export function get_record_count(...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" "node") [] node) + ) + (call %init_peer_id% ("getDataSrv" "relay") [] relay) + ) + (call -relay- ("op" "noop") []) + ) + (call relay ("op" "noop") []) + ) + (xor + (call node ("DataProvider" "get_record_count") [] res) + (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") [res]) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + ) + ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) + ) + ` + return callFunction( + args, + { + "functionName" : "get_record_count", + "returnType" : { + "tag" : "primitive" + }, + "argDefs" : [ + { + "name" : "node", + "argType" : { + "tag" : "primitive" + } + }, + { + "name" : "relay", + "argType" : { + "tag" : "primitive" + } + } + ], + "names" : { + "relay" : "-relay-", + "getDataSrv" : "getDataSrv", + "callbackSrv" : "callbackSrv", + "responseSrv" : "callbackSrv", + "responseFnName" : "response", + "errorHandlingSrv" : "errorHandlingSrv", + "errorFnName" : "error" + } +}, + script + ) +} + + +export type Get_recordsResult = { stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; event_signature: string; peer_id: string; signed_response: string; snapshot_id: number; timestamp: number; ts_validation: boolean; }[]; } +export function get_records(node: string, relay: string, config?: {ttl?: number}): Promise; +export function get_records(peer: FluencePeer, node: string, relay: string, config?: {ttl?: number}): Promise; +export function get_records(...args: any) { let script = ` (xor @@ -272,7 +572,7 @@ export function get_all_validations(...args: any) { return callFunction( args, { - "functionName" : "get_all_validations", + "functionName" : "get_records", "returnType" : { "tag" : "primitive" }, @@ -303,98 +603,3 @@ export function get_all_validations(...args: any) { script ) } - - -export type Get_validationResult = { snapshot_id: number; } -export function get_validation(snapshot_id: number, node: string, relay: string, config?: {ttl?: number}): Promise; -export function get_validation(peer: FluencePeer, snapshot_id: number, node: string, relay: string, config?: {ttl?: number}): Promise; -export function get_validation(...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" "snapshot_id") [] snapshot_id) - ) - (call %init_peer_id% ("getDataSrv" "node") [] node) - ) - (call %init_peer_id% ("getDataSrv" "relay") [] relay) - ) - (call -relay- ("op" "noop") []) - ) - (call relay ("op" "noop") []) - ) - (xor - (call node ("DataProvider" "get_record") [snapshot_id] res) - (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") [res]) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) - ) - ) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) - ) - ` - return callFunction( - args, - { - "functionName" : "get_validation", - "returnType" : { - "tag" : "primitive" - }, - "argDefs" : [ - { - "name" : "snapshot_id", - "argType" : { - "tag" : "primitive" - } - }, - { - "name" : "node", - "argType" : { - "tag" : "primitive" - } - }, - { - "name" : "relay", - "argType" : { - "tag" : "primitive" - } - } - ], - "names" : { - "relay" : "-relay-", - "getDataSrv" : "getDataSrv", - "callbackSrv" : "callbackSrv", - "responseSrv" : "callbackSrv", - "responseFnName" : "response", - "errorHandlingSrv" : "errorHandlingSrv", - "errorFnName" : "error" - } -}, - script - ) -} diff --git a/src/_aqua/snapshot.ts b/src/_aqua/snapshot.ts index cbe2502..d868407 100644 --- a/src/_aqua/snapshot.ts +++ b/src/_aqua/snapshot.ts @@ -80,7 +80,9 @@ export function registerEIPValidator(...args: any) { export interface DataProviderDef { - get_record: (snapshot_id: number, callParams: CallParams<'snapshot_id'>) => { stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; event_signature: string; peer_id: string; signed_response: string; snapshot_id: number; timestamp: number; ts_validation: boolean; }[]; } | Promise<{ stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; event_signature: string; peer_id: string; signed_response: string; snapshot_id: number; timestamp: number; ts_validation: boolean; }[]; }>; + clear_table: (password: string, callParams: CallParams<'password'>) => { stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; event_signature: string; peer_id: string; signed_response: string; snapshot_id: number; timestamp: number; ts_validation: boolean; }[]; } | Promise<{ stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; event_signature: string; peer_id: string; signed_response: string; snapshot_id: number; timestamp: number; ts_validation: boolean; }[]; }>; +get_record: (snapshot_id: number, callParams: CallParams<'snapshot_id'>) => { stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; event_signature: string; peer_id: string; signed_response: string; snapshot_id: number; timestamp: number; ts_validation: boolean; }[]; } | Promise<{ stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; event_signature: string; peer_id: string; signed_response: string; snapshot_id: number; timestamp: number; ts_validation: boolean; }[]; }>; +get_record_count: (callParams: CallParams) => number | Promise; get_records: (callParams: CallParams) => { stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; event_signature: string; peer_id: string; signed_response: string; snapshot_id: number; timestamp: number; ts_validation: boolean; }[]; } | Promise<{ stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; event_signature: string; peer_id: string; signed_response: string; snapshot_id: number; timestamp: number; ts_validation: boolean; }[]; }>; } export function registerDataProvider(service: DataProviderDef): void; @@ -95,6 +97,20 @@ export function registerDataProvider(...args: any) { { "defaultServiceId" : "snapshot", "functions" : [ + { + "functionName" : "clear_table", + "argDefs" : [ + { + "name" : "password", + "argType" : { + "tag" : "primitive" + } + } + ], + "returnType" : { + "tag" : "primitive" + } + }, { "functionName" : "get_record", "argDefs" : [ @@ -109,6 +125,14 @@ export function registerDataProvider(...args: any) { "tag" : "primitive" } }, + { + "functionName" : "get_record_count", + "argDefs" : [ + ], + "returnType" : { + "tag" : "primitive" + } + }, { "functionName" : "get_records", "argDefs" : [ @@ -124,10 +148,10 @@ export function registerDataProvider(...args: any) { // 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) { +export type Delete_rowsResult = { stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; event_signature: string; peer_id: string; signed_response: string; snapshot_id: number; timestamp: number; ts_validation: boolean; }[]; } +export function delete_rows(passwd: string, peer_: string, relay: string, config?: {ttl?: number}): Promise; +export function delete_rows(peer: FluencePeer, passwd: string, peer_: string, relay: string, config?: {ttl?: number}): Promise; +export function delete_rows(...args: any) { let script = ` (xor @@ -141,18 +165,18 @@ export function validate(...args: any) { (seq (seq (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) - (call %init_peer_id% ("getDataSrv" "relay") [] relay) + (call %init_peer_id% ("getDataSrv" "passwd") [] passwd) ) (call %init_peer_id% ("getDataSrv" "peer") [] peer) ) - (call %init_peer_id% ("getDataSrv" "eip712_json") [] eip712_json) + (call %init_peer_id% ("getDataSrv" "relay") [] relay) ) (call -relay- ("op" "noop") []) ) (call relay ("op" "noop") []) ) (xor - (call peer ("snapshot" "eip712_validation_string") [eip712_json peer] result) + (call peer ("snapshot" "clear_table") [passwd] result) (seq (seq (seq @@ -180,13 +204,13 @@ export function validate(...args: any) { return callFunction( args, { - "functionName" : "validate", + "functionName" : "delete_rows", "returnType" : { "tag" : "primitive" }, "argDefs" : [ { - "name" : "relay", + "name" : "passwd", "argType" : { "tag" : "primitive" } @@ -198,7 +222,7 @@ export function validate(...args: any) { } }, { - "name" : "eip712_json", + "name" : "relay", "argType" : { "tag" : "primitive" } @@ -314,6 +338,92 @@ export function validate_from_url(...args: any) { } + +export function get_count(relay: string, peer_: string, config?: {ttl?: number}): Promise; +export function get_count(peer: FluencePeer, relay: string, peer_: string, config?: {ttl?: number}): Promise; +export function get_count(...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_record_count") [] 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_count", + "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 + ) +} + + export type Get_recordResult = { stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; event_signature: string; peer_id: string; signed_response: string; snapshot_id: number; timestamp: number; ts_validation: boolean; }[]; } 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; @@ -409,6 +519,101 @@ export function get_record(...args: any) { } + +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 type Get_recordsResult = { stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; event_signature: string; peer_id: string; signed_response: string; snapshot_id: number; timestamp: number; ts_validation: boolean; }[]; } export function get_records(relay: string, peer_: string, config?: {ttl?: number}): Promise; export function get_records(peer: FluencePeer, relay: string, peer_: string, config?: {ttl?: number}): Promise; diff --git a/src/index.ts b/src/index.ts index bfb0ccb..c756b89 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,34 +1,25 @@ 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 { get_db, create_table, insert_event, DBRecord, DBResult, select_events, select_event, select_count } from './local_db'; import got from 'got'; -import { base64 } from "ethers/lib/utils"; +import { ethers } from "ethers"; +import { create_wallet, sign_response } from "./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"; + +// SQLite path 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 + // todo: pre-create wallet and read from file. there should be one static wallet for the life of the client node const wallet = create_wallet(SecretKey); let response = eip_validation(eip712_json, wallet.address); @@ -80,18 +71,32 @@ class EIPValidator implements EIPValidatorDef { } // class exposed as service `DataProviderDef` in snapshot.aqua class DataProvider implements DataProviderDef { - + // record by snapshot_id async get_record(snapshot_id: number): Promise { return select_event(snapshot_id); - } + // get all records. currently limited to 100 rows max. + // todo: add paginaton async get_records(): Promise { // todo: add pagination const result = await select_events(); console.log("get records: ", result); return result; } + + // row count; if err doing so, return value is -1 + async get_record_count(): Promise { + const result = await select_count(); + console.log("get records: ", result); + return result; + } + + // clear table -- illustrative purposes only + async clear_table(password: string): Promise { + return this.clear_table(password); + + } } @@ -123,14 +128,7 @@ async function main() { 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); - + console.log("crtl-c to exit"); // await Fluence.stop(); } diff --git a/src/local_db.ts b/src/local_db.ts index dc5cb33..6c0af0f 100644 --- a/src/local_db.ts +++ b/src/local_db.ts @@ -8,6 +8,7 @@ const sqlite3 = sqlite.verbose(); import { Response } from './eip_processor'; const DB_PATH = './data/snapshot.db'; +const PWD_HASH = "bad really bad"; export interface DBRecord { snapshot_id: number; @@ -44,7 +45,6 @@ export function get_db(db_path: string): sqlite.Database { } - export async function create_table(db: sqlite.Database) { const stmt = `create table if not exists snapshot ( snapshot_id integer unique, @@ -88,28 +88,27 @@ export async function insert_event(db: sqlite.Database, eip_obj: any, response_o export async function select_event(snapshot_id: number): Promise { var db = get_db(DB_PATH); let result: DBResult = {} as DBResult; - const stmt = 'select * from snapshot where snapshot_id=?' + const stmt = 'select * from snapshot where snapshot_id=?'; return new Promise((resolve) => { db.get(stmt, [snapshot_id], (err, row) => { db.close(); if (err) { result.stderr = err.message; result.stdout = []; - resolve(result) } else { result.stderr = ""; const response_arr = new Array(); response_arr.push(row); result.stdout = response_arr; - resolve(result); } + resolve(result) }); }); }; // todo: add pagination -export function select_events(): Promise { +export async function select_events(): Promise { var db = get_db(DB_PATH); const stmt = "select * from snapshot limit ?"; let result: DBResult = {} as DBResult; @@ -131,4 +130,54 @@ export function select_events(): Promise { resolve(result); }); }); -} \ No newline at end of file +} + +export async function select_count(): Promise { + var db = get_db(DB_PATH); + const stmt = 'select count(*) as count from snapshot'; + let result: number; + return new Promise((resolve) => { + db.get(stmt, [], (err, row) => { + db.close(); + if (err) { + result = -1; + } + else { + console.log("count: ", row); + result = row.count; + } + resolve(result); + }); + }); +}; + + +export async function clear_table(pwd_hash: string): Promise { + let result: DBResult = {} as DBResult; + // todo: you know what to do + if (pwd_hash === PWD_HASH) { + result.stderr = "invalid password"; + result.stdout = []; + resolveProperties(result); + } + + var db = get_db(DB_PATH); + const stmt = 'delete from snapshot' + return new Promise((resolve) => { + db.get(stmt, [], (err, row) => { + db.close(); + if (err) { + result.stderr = err.message; + result.stdout = []; + } + else { + console.log("count: ", row); + result.stderr = ""; + const response_arr = new Array(); + response_arr.push(row); + result.stdout = response_arr; + } + resolve(result); + }); + }); +}; \ No newline at end of file diff --git a/src/utils.ts b/src/utils.ts new file mode 100644 index 0000000..d9b4583 --- /dev/null +++ b/src/utils.ts @@ -0,0 +1,11 @@ +import { ethers } from "ethers"; +// import { base64 } from "ethers/lib/utils"; + +export function create_wallet(sk: string): ethers.Wallet { + return new ethers.Wallet(sk); +} + +export async function sign_response(wallet: ethers.Wallet, response: Response): Promise { + const signed_msg = wallet.signMessage(JSON.stringify(response)); + return signed_msg; +} \ No newline at end of file