mirror of
https://github.com/fluencelabs/examples
synced 2025-07-02 19:21:35 +00:00
change dir name
This commit is contained in:
73
aqua-examples/decentralized-blockchain-gateway/aqua/all.aqua
Normal file
73
aqua-examples/decentralized-blockchain-gateway/aqua/all.aqua
Normal file
@ -0,0 +1,73 @@
|
||||
data FunctionAddress:
|
||||
peer_id: string
|
||||
service_id: string
|
||||
|
||||
data Provider:
|
||||
name: string
|
||||
url: string
|
||||
|
||||
data EVMResult:
|
||||
stdout: string
|
||||
stderr: string
|
||||
|
||||
service MyOp("op"):
|
||||
-- identity(x:string) -> string
|
||||
array_length(providers: []Provider) -> i64
|
||||
-- array_length(nodes: []string) -> i64
|
||||
|
||||
service MultiProviderQuery("service-id"):
|
||||
get_block_number(provider: Provider) -> EVMResult
|
||||
|
||||
func get_service_id_no_try(node: string, services: []FunctionAddress) -> string:
|
||||
res: *string
|
||||
for service <- services:
|
||||
if service.peer_id == node:
|
||||
res <<- service.service_id
|
||||
<- res[0]
|
||||
|
||||
--func custom_result(out_string: string, err_string: string) -> EVMResult:
|
||||
-- r: *EVMResult
|
||||
-- r.stdout <- out_string
|
||||
-- r.stderr <- err_string
|
||||
-- <- r
|
||||
|
||||
--func custom_num(number: i64) -> i64:
|
||||
-- num: *i64
|
||||
-- num <<- number
|
||||
-- <- num[0]
|
||||
|
||||
|
||||
func get_service_id_try(node: string, services: []FunctionAddress) -> string:
|
||||
res: *string
|
||||
for service <- services try:
|
||||
if service.peer_id == node:
|
||||
res <<- service.service_id
|
||||
<- res[0]
|
||||
|
||||
func get_service_id_par(node: string, services: []FunctionAddress) -> string:
|
||||
res: *string
|
||||
for service <- services par:
|
||||
if service.peer_id == node:
|
||||
res <<- service.service_id
|
||||
<- res[0]
|
||||
|
||||
-- func get_block_number(providers: []Provider, nodes: []string, services: []FunctionAddress) -> []string:
|
||||
func get_block_number(providers: []Provider, nodes: []string, services: []FunctionAddress) -> []EVMResult:
|
||||
-- result: *string
|
||||
result: *EVMResult
|
||||
for node <- nodes par:
|
||||
for provider <- providers par:
|
||||
on node:
|
||||
service_id <- get_service_id_no_try(node, services)
|
||||
MultiProviderQuery service_id
|
||||
try:
|
||||
-- res <- get_block_number(provider.url)
|
||||
-- result <<- (provider.name, node, res)
|
||||
result <- MultiProviderQuery.get_block_number(provider)
|
||||
-- catch e:
|
||||
-- result <- custom_result(e)
|
||||
<- result
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,25 @@
|
||||
data FunctionAddress:
|
||||
peer_id: string
|
||||
service_id: string
|
||||
|
||||
func get_service_id_no_try(node: string, services: []FunctionAddress) -> string:
|
||||
res: *string
|
||||
for service <- services:
|
||||
if service.peer_id == node:
|
||||
res <<- service.service_id
|
||||
<- res[0]
|
||||
|
||||
func get_service_id_try(node: string, services: []FunctionAddress) -> string:
|
||||
res: *string
|
||||
for service <- services try:
|
||||
if service.peer_id == node:
|
||||
res <<- service.service_id
|
||||
<- res[0]
|
||||
|
||||
func get_service_id_par(node: string, services: []FunctionAddress) -> string:
|
||||
res: *string
|
||||
for service <- services par:
|
||||
if service.peer_id == node:
|
||||
res <<- service.service_id
|
||||
<- res[0]
|
||||
|
@ -0,0 +1,159 @@
|
||||
data FunctionAddress:
|
||||
peer_id: string
|
||||
service_id: string
|
||||
|
||||
data ProviderInfo:
|
||||
name: string
|
||||
url: string
|
||||
|
||||
data EVMResult:
|
||||
provider: string
|
||||
stdout: string
|
||||
stderr: string
|
||||
|
||||
service MyOp("op"):
|
||||
array_length(providers: []ProviderInfo) -> i64
|
||||
identity(x: i64) -> f64
|
||||
|
||||
service MyOp2("op"):
|
||||
array_length(providers: []FunctionAddress) -> i64
|
||||
|
||||
service MultiProviderQuery("service-id"):
|
||||
get_block_number(provider: ProviderInfo) -> EVMResult
|
||||
|
||||
|
||||
func get_block_heights(providers: []ProviderInfo, addrs: []FunctionAddress) -> []EVMResult:
|
||||
result: *EVMResult
|
||||
result2: *string
|
||||
n <- MyOp.array_length(providers)
|
||||
n2 <- MyOp2.array_length(addrs)
|
||||
|
||||
if n > 0:
|
||||
for addr <- addrs par:
|
||||
on addr.peer_id:
|
||||
MultiProviderQuery addr.service_id
|
||||
for provider <- providers:
|
||||
result <- MultiProviderQuery.get_block_number(provider)
|
||||
result2 <<- provider.name
|
||||
-- join result[n2-1]
|
||||
join result[n*n2-1]
|
||||
<- result
|
||||
|
||||
|
||||
func get_block_height(providers: []ProviderInfo, addr: FunctionAddress) ->[]EVMResult:
|
||||
result: *EVMResult
|
||||
n <- MyOp.array_length(providers)
|
||||
|
||||
if n > 0:
|
||||
on addr.peer_id:
|
||||
MultiProviderQuery addr.service_id
|
||||
for provider <- providers:
|
||||
result <- MultiProviderQuery.get_block_number(provider)
|
||||
join result[n]
|
||||
<- result
|
||||
|
||||
|
||||
func provider_test(providers: []ProviderInfo) -> []string:
|
||||
result: *string
|
||||
n <- MyOp.array_length(providers)
|
||||
|
||||
if n > 0:
|
||||
for provider <- providers:
|
||||
result <<- provider.name
|
||||
join result[n-1]
|
||||
<- result
|
||||
|
||||
data QuorumService:
|
||||
peer_id: string
|
||||
service_id: string
|
||||
|
||||
data Oracle:
|
||||
n: u32
|
||||
mode: u64
|
||||
freq: u32
|
||||
err_str: string
|
||||
|
||||
service SimpleQuorum("service-id"):
|
||||
point_estimate(data: []EVMResult, min_points: u32) -> Oracle
|
||||
is_quorum(x:u64, y:u64, threshold:f64) -> bool
|
||||
|
||||
func get_block_height_oracle(providers: []ProviderInfo, addrs: []FunctionAddress, q_addr: QuorumService) -> Oracle:
|
||||
result: *EVMResult
|
||||
result2: *string
|
||||
oracle: *Oracle
|
||||
|
||||
n <- MyOp.array_length(providers)
|
||||
n2 <- MyOp2.array_length(addrs)
|
||||
|
||||
if n > 0:
|
||||
for addr <- addrs par:
|
||||
on addr.peer_id:
|
||||
MultiProviderQuery addr.service_id
|
||||
for provider <- providers:
|
||||
result <- MultiProviderQuery.get_block_number(provider)
|
||||
result2 <<- provider.name
|
||||
-- join result[n2-1]
|
||||
join result[n*n2-1]
|
||||
|
||||
on q_addr.peer_id:
|
||||
SimpleQuorum q_addr.service_id
|
||||
oracle <-SimpleQuorum.point_estimate(result, 3)
|
||||
|
||||
<- oracle[0]
|
||||
|
||||
|
||||
-- func get_block_height_quorum(providers: []ProviderInfo, addrs: []FunctionAddress, q_addr: QuorumService, t_quorum: i64) -> Oracle, u32:
|
||||
func get_block_height_quorum(providers: []ProviderInfo, addrs: []FunctionAddress, q_addr: QuorumService, t_quorum: f64) -> Oracle, bool:
|
||||
result: *EVMResult
|
||||
result2: *string
|
||||
oracle: *Oracle
|
||||
quorum: *bool
|
||||
|
||||
min_points = 3 -- minimum points we want in order to calculate an oracle
|
||||
|
||||
n <- MyOp.array_length(providers)
|
||||
n2 <- MyOp2.array_length(addrs)
|
||||
|
||||
if n > 0:
|
||||
for addr <- addrs par:
|
||||
on addr.peer_id:
|
||||
MultiProviderQuery addr.service_id
|
||||
for provider <- providers:
|
||||
result <- MultiProviderQuery.get_block_number(provider)
|
||||
result2 <<- provider.name
|
||||
-- join result[n2-1]
|
||||
join result[n*n2-1]
|
||||
|
||||
on q_addr.peer_id:
|
||||
SimpleQuorum q_addr.service_id
|
||||
oracle <-SimpleQuorum.point_estimate(result, min_points)
|
||||
quorum <- SimpleQuorum.is_quorum(oracle[0].freq, oracle[0].n, t_quorum)
|
||||
|
||||
<- oracle[0], quorum[0]
|
||||
|
||||
|
||||
func get_block_height_quorum_exceptions(providers: []ProviderInfo, addrs: []FunctionAddress, q_addr: QuorumService) -> Oracle, EVMResult:
|
||||
result: *EVMResult
|
||||
result2: *string
|
||||
oracle: *Oracle
|
||||
|
||||
n <- MyOp.array_length(providers)
|
||||
n2 <- MyOp2.array_length(addrs)
|
||||
|
||||
if n > 0:
|
||||
for addr <- addrs par:
|
||||
on addr.peer_id:
|
||||
MultiProviderQuery addr.service_id
|
||||
for provider <- providers:
|
||||
result <- MultiProviderQuery.get_block_number(provider)
|
||||
result2 <<- provider.name
|
||||
-- join result[n2-1]
|
||||
join result[n*n2-1]
|
||||
|
||||
on q_addr.peer_id:
|
||||
SimpleQuorum q_addr.service_id
|
||||
oracle <-SimpleQuorum.point_estimate(result, 3)
|
||||
|
||||
|
||||
|
||||
<- oracle[0], result[0]
|
Reference in New Issue
Block a user