update db schema to eip712 signature instead of snapshot id

This commit is contained in:
boneyard93501 2021-11-06 18:50:27 -05:00
parent e23d66d2f8
commit dea3be5d4e
6 changed files with 27 additions and 29 deletions

View File

@ -143,7 +143,7 @@ result for call with 9278489: {
stderr: '', stderr: '',
stdout: [ stdout: [
{ {
snapshot_id: 9278489, signature: 0xdd91572e2e721a59ca62abd4ec07c55b9496bf10969112e6c1dbb9936394bd5a602b2f697b1bb0910edb72a726bc1f05a0f13d9cbf5bc715f87211f40c75348e1c,
event_address: '0xeF8305E140ac520225DAf050e2f71d5fBcC543e7', event_address: '0xeF8305E140ac520225DAf050e2f71d5fBcC543e7',
event_signature: '0xc0a90a0bf43c0b774570608bf0279143b366b7880798112b678b416a7500576b41e19f7b4eb457d58de29be3a201f700fafab1f02179da0faae653b7e8ecf82b1c', event_signature: '0xc0a90a0bf43c0b774570608bf0279143b366b7880798112b678b416a7500576b41e19f7b4eb457d58de29be3a201f700fafab1f02179da0faae653b7e8ecf82b1c',
eip712_doc: '{"domain":{"name":"snapshot","version":"0.1.4"},"types":{"Proposal":[{"name":"from","type":"address"},{"name":"space","type":"string"},{"name":"timestamp","type":"uint64"},{"name":"type","type":"string"},{"name":"title","type":"string"},{"name":"body","type":"string"},{"name":"choices","type":"string[]"},{"name":"start","type":"uint64"},{"name":"end","type":"uint64"},{"name":"snapshot","type":"uint64"},{"name":"network","type":"string"},{"name":"strategies","type":"string"},{"name":"plugins","type":"string"},{"name":"metadata","type":"string"}]},"message":{"space":"fabien.eth","type":"single-choice","title":"This is a long title this is a long title this is a long title this is a long title this is a long title this is a long","body":"This is a long title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title.","choices":["Approve","Reject"],"start":1630472400,"end":1640926800,"snapshot":9278489,"network":"4","strategies":"[{\\"name\\":\\"ticket\\",\\"params\\":{\\"value\\":100,\\"symbol\\":\\"$\\"}}]","plugins":"{}","metadata":"{}","from":"0xeF8305E140ac520225DAf050e2f71d5fBcC543e7","timestamp":1631432106}}', eip712_doc: '{"domain":{"name":"snapshot","version":"0.1.4"},"types":{"Proposal":[{"name":"from","type":"address"},{"name":"space","type":"string"},{"name":"timestamp","type":"uint64"},{"name":"type","type":"string"},{"name":"title","type":"string"},{"name":"body","type":"string"},{"name":"choices","type":"string[]"},{"name":"start","type":"uint64"},{"name":"end","type":"uint64"},{"name":"snapshot","type":"uint64"},{"name":"network","type":"string"},{"name":"strategies","type":"string"},{"name":"plugins","type":"string"},{"name":"metadata","type":"string"}]},"message":{"space":"fabien.eth","type":"single-choice","title":"This is a long title this is a long title this is a long title this is a long title this is a long title this is a long","body":"This is a long title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title title this is a long title this is a long title.","choices":["Approve","Reject"],"start":1630472400,"end":1640926800,"snapshot":9278489,"network":"4","strategies":"[{\\"name\\":\\"ticket\\",\\"params\\":{\\"value\\":100,\\"symbol\\":\\"$\\"}}]","plugins":"{}","metadata":"{}","from":"0xeF8305E140ac520225DAf050e2f71d5fBcC543e7","timestamp":1631432106}}',

View File

@ -14,9 +14,8 @@ data ValidationResult:
data DBRecord: data DBRecord:
snapshot_id: u64 signature: u64
event_address: string event_address: string
event_signature: string
eip712_doc: string eip712_doc: string
peer_id: string peer_id: string
timestamp: u64 timestamp: u64
@ -34,7 +33,7 @@ service EIPValidator("snapshot"):
service DataProvider("snapshot"): service DataProvider("snapshot"):
get_records() -> DBResult get_records() -> DBResult
get_record(snapshot_id: u64) -> DBResult get_record(signnature: string) -> DBResult
get_record_count() -> u64 get_record_count() -> u64
delete_records(password: string) -> DBResult delete_records(password: string) -> DBResult
@ -48,9 +47,9 @@ func validate_from_url(relay: string, peer:string, eip712_url: string) -> Valida
result <- EIPValidator.eip712_validation_url(eip712_url, peer) result <- EIPValidator.eip712_validation_url(eip712_url, peer)
<- result <- result
func get_record(relay:string, peer:string, snapshot_id: u64) -> DBResult: func get_record(relay:string, peer:string, signature: string) -> DBResult:
on peer via relay: on peer via relay:
result <- DataProvider.get_record(snapshot_id) result <- DataProvider.get_record(signature)
<- result <- result
func get_records(relay:string, peer:string) -> DBResult: func get_records(relay:string, peer:string) -> DBResult:

Binary file not shown.

View File

@ -80,10 +80,10 @@ export function registerEIPValidator(...args: any) {
export interface DataProviderDef { export interface DataProviderDef {
delete_records: (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; }[]; }>; delete_records: (password: string, callParams: CallParams<'password'>) => { stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; peer_id: string; signature: number; signed_response: string; timestamp: number; ts_validation: boolean; }[]; } | Promise<{ stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; peer_id: string; signature: number; signed_response: string; 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: (signnature: string, callParams: CallParams<'signnature'>) => { stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; peer_id: string; signature: number; signed_response: string; timestamp: number; ts_validation: boolean; }[]; } | Promise<{ stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; peer_id: string; signature: number; signed_response: string; timestamp: number; ts_validation: boolean; }[]; }>;
get_record_count: (callParams: CallParams<null>) => number | Promise<number>; get_record_count: (callParams: CallParams<null>) => number | Promise<number>;
get_records: (callParams: CallParams<null>) => { 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_records: (callParams: CallParams<null>) => { stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; peer_id: string; signature: number; signed_response: string; timestamp: number; ts_validation: boolean; }[]; } | Promise<{ stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; peer_id: string; signature: number; signed_response: string; timestamp: number; ts_validation: boolean; }[]; }>;
} }
export function registerDataProvider(service: DataProviderDef): void; export function registerDataProvider(service: DataProviderDef): void;
export function registerDataProvider(serviceId: string, service: DataProviderDef): void; export function registerDataProvider(serviceId: string, service: DataProviderDef): void;
@ -115,7 +115,7 @@ export function registerDataProvider(...args: any) {
"functionName" : "get_record", "functionName" : "get_record",
"argDefs" : [ "argDefs" : [
{ {
"name" : "snapshot_id", "name" : "signnature",
"argType" : { "argType" : {
"tag" : "primitive" "tag" : "primitive"
} }
@ -329,9 +329,9 @@ export function get_count(...args: any) {
} }
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 type Get_recordResult = { stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; peer_id: string; signature: number; signed_response: string; timestamp: number; ts_validation: boolean; }[]; }
export function get_record(relay: string, peer_: string, snapshot_id: number, config?: {ttl?: number}): Promise<Get_recordResult>; export function get_record(relay: string, peer_: string, signature: string, config?: {ttl?: number}): Promise<Get_recordResult>;
export function get_record(peer: FluencePeer, relay: string, peer_: string, snapshot_id: number, config?: {ttl?: number}): Promise<Get_recordResult>; export function get_record(peer: FluencePeer, relay: string, peer_: string, signature: string, config?: {ttl?: number}): Promise<Get_recordResult>;
export function get_record(...args: any) { export function get_record(...args: any) {
let script = ` let script = `
@ -350,14 +350,14 @@ export function get_record(...args: any) {
) )
(call %init_peer_id% ("getDataSrv" "peer") [] peer) (call %init_peer_id% ("getDataSrv" "peer") [] peer)
) )
(call %init_peer_id% ("getDataSrv" "snapshot_id") [] snapshot_id) (call %init_peer_id% ("getDataSrv" "signature") [] signature)
) )
(call -relay- ("op" "noop") []) (call -relay- ("op" "noop") [])
) )
(call relay ("op" "noop") []) (call relay ("op" "noop") [])
) )
(xor (xor
(call peer ("snapshot" "get_record") [snapshot_id] result) (call peer ("snapshot" "get_record") [signature] result)
(seq (seq
(seq (seq
(seq (seq
@ -403,7 +403,7 @@ export function get_record(...args: any) {
} }
}, },
{ {
"name" : "snapshot_id", "name" : "signature",
"argType" : { "argType" : {
"tag" : "primitive" "tag" : "primitive"
} }
@ -424,7 +424,7 @@ export function get_record(...args: any) {
} }
export type Delete_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 type Delete_recordsResult = { stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; peer_id: string; signature: number; signed_response: string; timestamp: number; ts_validation: boolean; }[]; }
export function delete_records(passwd: string, peer_: string, relay: string, config?: {ttl?: number}): Promise<Delete_recordsResult>; export function delete_records(passwd: string, peer_: string, relay: string, config?: {ttl?: number}): Promise<Delete_recordsResult>;
export function delete_records(peer: FluencePeer, passwd: string, peer_: string, relay: string, config?: {ttl?: number}): Promise<Delete_recordsResult>; export function delete_records(peer: FluencePeer, passwd: string, peer_: string, relay: string, config?: {ttl?: number}): Promise<Delete_recordsResult>;
export function delete_records(...args: any) { export function delete_records(...args: any) {
@ -614,7 +614,7 @@ export function validate(...args: any) {
} }
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 type Get_recordsResult = { stderr: string; stdout: { eip712_doc: string; eip_validation: boolean; event_address: string; peer_id: string; signature: number; signed_response: string; timestamp: number; ts_validation: boolean; }[]; }
export function get_records(relay: string, peer_: string, config?: {ttl?: number}): Promise<Get_recordsResult>; export function get_records(relay: string, peer_: string, config?: {ttl?: number}): Promise<Get_recordsResult>;
export function get_records(peer: FluencePeer, relay: string, peer_: string, config?: {ttl?: number}): Promise<Get_recordsResult>; export function get_records(peer: FluencePeer, relay: string, peer_: string, config?: {ttl?: number}): Promise<Get_recordsResult>;
export function get_records(...args: any) { export function get_records(...args: any) {

View File

@ -78,9 +78,9 @@ class EIPValidator implements EIPValidatorDef {
} }
// class exposed as service `DataProviderDef` in snapshot.aqua // class exposed as service `DataProviderDef` in snapshot.aqua
class DataProvider implements DataProviderDef { class DataProvider implements DataProviderDef {
// record by snapshot_id // record by signature
async get_record(snapshot_id: number): Promise<any> { async get_record(signature: string): Promise<any> {
return select_event(snapshot_id); return select_event(signature);
} }
// get all records. currently limited to 100 rows max. // get all records. currently limited to 100 rows max.

View File

@ -11,7 +11,7 @@ const DB_PATH = './data/snapshot.db';
const PWD_HASH = "bad really bad"; const PWD_HASH = "bad really bad";
export interface DBRecord { export interface DBRecord {
snapshot_id: number; signature: string;
event_address: string; event_address: string;
event_signature: string; event_signature: string;
eip712_doc: string; eip712_doc: string;
@ -47,9 +47,8 @@ export function get_db(db_path: string): sqlite.Database {
export async function create_table(db: sqlite.Database) { export async function create_table(db: sqlite.Database) {
const stmt = `create table if not exists snapshot ( const stmt = `create table if not exists snapshot (
snapshot_id integer unique, signature text unique,
event_address text, event_address text,
event_signature text,
eip712_doc blob, eip712_doc blob,
peer_id text, peer_id text,
timestamp integer, timestamp integer,
@ -71,8 +70,8 @@ export async function create_table(db: sqlite.Database) {
} }
export async function insert_event(db: sqlite.Database, eip_obj: any, response_obj: Response, signed_msg: string) { export async function insert_event(db: sqlite.Database, eip_obj: any, response_obj: Response, signed_msg: string) {
const stmt = `insert into snapshot values (?, ?, ?, ?, ?, ?, ?, ?, ?)`; const stmt = `insert into snapshot values (?, ?, ?, ?, ?, ?, ?, ?)`;
var ins_vals = [eip_obj.data.message.snapshot, eip_obj.address, eip_obj.sig, JSON.stringify(eip_obj.data), response_obj.peer_id, response_obj.timestamp, response_obj.eip_validation, response_obj.ts_validation, signed_msg]; var ins_vals = [eip_obj.sig, eip_obj.address, JSON.stringify(eip_obj.data), response_obj.peer_id, response_obj.timestamp, response_obj.eip_validation, response_obj.ts_validation, signed_msg];
let promise = new Promise<void>((resolve, reject) => db.run(stmt, ins_vals, (res: sqlite.RunResult, err: Error) => { let promise = new Promise<void>((resolve, reject) => db.run(stmt, ins_vals, (res: sqlite.RunResult, err: Error) => {
// console.dir(res); // console.dir(res);
if (err !== null) { if (err !== null) {
@ -85,12 +84,12 @@ export async function insert_event(db: sqlite.Database, eip_obj: any, response_o
return promise; return promise;
} }
export async function select_event(snapshot_id: number): Promise<DBResult> { export async function select_event(signature: string): Promise<DBResult> {
var db = get_db(DB_PATH); var db = get_db(DB_PATH);
let result: DBResult = {} as DBResult; let result: DBResult = {} as DBResult;
const stmt = 'select * from snapshot where snapshot_id=?'; const stmt = 'select * from snapshot where signature=?';
return new Promise((resolve) => { return new Promise((resolve) => {
db.get(stmt, [snapshot_id], (err, row) => { db.get(stmt, [signature], (err, row) => {
db.close(); db.close();
if (err) { if (err) {
result.stderr = err.message; result.stderr = err.message;