diff --git a/ts-oracle/air-scripts/timestamp_getter.ts_getter.air b/ts-oracle/air-scripts/timestamp_getter.ts_getter.air new file mode 100644 index 0000000..9c49826 --- /dev/null +++ b/ts-oracle/air-scripts/timestamp_getter.ts_getter.air @@ -0,0 +1,48 @@ +(xor + (seq + (seq + (seq + (seq + (seq + (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) + (call %init_peer_id% ("getDataSrv" "node") [] node) + ) + (call -relay- ("op" "noop") []) + ) + (xor + (seq + (seq + (seq + (call node ("op" "string_to_b58") [node] k) + (call node ("kad" "neighborhood") [k false] nodes) + ) + (fold nodes n + (par + (seq + (xor + (call n ("peer" "timestamp_ms") [] $res) + (null) + ) + (call node ("op" "noop") []) + ) + (next n) + ) + ) + ) + (call node ("op" "identity") [$res.$.[9]!]) + ) + (seq + (call -relay- ("op" "noop") []) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) + ) + ) + ) + (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/ts-oracle/aqua-scripts/timestamp_getter.aqua b/ts-oracle/aqua-scripts/timestamp_getter.aqua new file mode 100644 index 0000000..88e971e --- /dev/null +++ b/ts-oracle/aqua-scripts/timestamp_getter.aqua @@ -0,0 +1,28 @@ +import "builtin.aqua" +-- create and identity service to join our results +service Op2("op"): + identity(s: u64) + array(a: string, b: u64) -> string + +-- function to get ten timestamps from our Kademlia +-- neighborhood and return as an array of u64 timestamps +-- the function arguement node is our per id +func ts_getter(node: string) -> []u64: + -- create a streaming variable + res: *u64 + -- execute on the pecified peer + on node: + -- get the base58 representation of the peer id + k <- Op.string_to_b58(node) + -- find all (default 20) neighborhood peers from k + nodes <- Kademlia.neighborhood(k, false) + -- for each peer in our neighborhood and in parallel + for n <- nodes par: + on n: + -- try and get the peer's timestamp + try: + res <- Peer.timestamp_ms() + -- flatten nine of our joined results + Op2.identity(res!9) + -- return an array of ten timestamps + <- res