aqua: fix bugs in API (#104)

This commit is contained in:
Aleksey Proshutisnkiy
2022-04-13 01:11:26 +04:00
committed by GitHub
parent 7671235b02
commit 6b320dd95f
6 changed files with 134 additions and 201 deletions

View File

@ -4,19 +4,19 @@ import "@fluencelabs/trust-graph/trust-graph.aqua"
func getKeySignature(label: string, timestamp_created: u64) -> SignResult:
bytes <- Registry.get_key_bytes(label, nil, timestamp_created, nil, "")
on INIT_PEER_ID:
on INIT_PEER_ID via HOST_PEER_ID:
result <- Sig.sign(bytes)
<- result
func getRecordSignature(key_id: string, value: string, relay_id: ?PeerId, service_id: ?string, timestamp_created: u64) -> SignResult:
bytes <- Registry.get_record_bytes(key_id, value, relay_id, service_id, timestamp_created, nil)
on INIT_PEER_ID:
on INIT_PEER_ID via HOST_PEER_ID:
signature <- Sig.sign(bytes)
<- signature
func getHostRecordSignature(key_id: string, value: string, relay_id: ?PeerId, service_id: ?string, timestamp_created: u64) -> SignResult:
bytes <- Registry.get_host_record_bytes(key_id, value, relay_id, service_id, timestamp_created, nil)
on INIT_PEER_ID:
on INIT_PEER_ID via HOST_PEER_ID:
signature <- Sig.sign(bytes)
<- signature

View File

@ -24,8 +24,10 @@ func getNeighbours(resource_id: ResourceId) -> []PeerId:
func getResource(resource_id: ResourceId) -> ?Key, *Error:
nodes <- getNeighbours(resource_id)
resources: *Key
result: ?Key
error: *Error
resources: *Key
for n <- nodes par:
on n:
try:
@ -36,24 +38,27 @@ func getResource(resource_id: ResourceId) -> ?Key, *Error:
else:
error <<- get_result.error
timeout: ?string
join resources[0]
par error <- Peer.timeout(10000, "resource not found, timeout exceeded")
par timeout <- Peer.timeout(5000, "resource not found, timeout exceeded")
if timeout != nil:
error <<- timeout!
merge_result <- Registry.merge_keys(resources)
resource: ?Key
if merge_result.success:
resource <<- merge_result.key
result <<- merge_result.key
else:
error <<- merge_result.error
<- resource, error
<- result, error
-- If this peer have set node_id as a provider for resource,
-- this call will prevent provider from renew
-- so that eventually it will disappear from the providers list
func removeNodeFromProviders(resource_id: ResourceId):
on HOST_PEER_ID:
func removeNodeFromProviders(provider_node_id: PeerId, resource_id: ResourceId):
on provider_node_id:
t <- Peer.timestamp_sec()
Registry.clear_host_record(resource_id, t)
@ -63,34 +68,35 @@ func createResource(label: string) -> ?ResourceId, *Error:
resource_id: ?ResourceId
error: *Error
successful: *bool
on HOST_PEER_ID:
sig_result <- getKeySignature(label, t)
if sig_result.success:
if sig_result.success == false:
error <<- sig_result.error!
else:
signature = sig_result.signature!
id <- getResourceId(label, INIT_PEER_ID)
nodes <- getNeighbours(id)
successful: *bool
for n <- nodes par:
on n:
try:
res <- registerKey(label, t, signature)
if res.success:
successful <<- true
else:
error <<- res.error
par Peer.timeout(10000, "timeout exceeded")
else:
error <<- sig_result.error!
timeout: ?string
join successful[0]
par timeout <- Peer.timeout(10000, "resource hasn't created: timeout exceeded")
timeout: ?string
success: *bool
join successful[0]
par timeout <- Peer.timeout(6000, "resource hasn't created: timeout exceeded")
if timeout == nil:
resource_id <<- id
else:
error <<- timeout!
if timeout == nil:
resource_id <<- id
else:
error <<- timeout!
<- resource_id, error
@ -104,7 +110,6 @@ func createResourceAndRegisterProvider(label: string, value: string, service_id:
relay_id <<- HOST_PEER_ID
t <- Peer.timestamp_sec()
successful: *bool
on HOST_PEER_ID:
key_sig_result <- getKeySignature(label, t)
@ -119,6 +124,7 @@ func createResourceAndRegisterProvider(label: string, value: string, service_id:
key_signature = key_sig_result.signature!
record_signature = record_sig_result.signature!
nodes <- getNeighbours(id)
successful: *bool
for n <- nodes par:
on n:
try:
@ -131,16 +137,15 @@ func createResourceAndRegisterProvider(label: string, value: string, service_id:
error <<- put_res.error
else:
error <<- reg_res.error
par Peer.timeout(10000, "timeout exceeded")
timeout: ?string
join successful[0]
par timeout <- Peer.timeout(10000, "resource hasn't created: timeout exceeded")
timeout: ?string
join successful[0]
par timeout <- Peer.timeout(5000, "resource hasn't created: timeout exceeded")
if timeout == nil:
resource_id <<- id
else:
error <<- timeout!
if timeout == nil:
resource_id <<- id
else:
error <<- timeout!
<- resource_id, error
@ -151,7 +156,6 @@ func createResourceAndRegisterNodeProvider(provider_node_id: PeerId, label: stri
t <- Peer.timestamp_sec()
successful: *bool
on provider_node_id:
key_sig_result <- getKeySignature(label, t)
@ -171,6 +175,7 @@ func createResourceAndRegisterNodeProvider(provider_node_id: PeerId, label: stri
else:
r <- putHostRecord(id, value, nil, service_id, t, record_signature)
nodes <- getNeighbours(id)
successful: *bool
for n <- nodes par:
on n:
try:
@ -183,22 +188,22 @@ func createResourceAndRegisterNodeProvider(provider_node_id: PeerId, label: stri
error <<- prop_res.error
else:
error <<- reg_res.error
par Peer.timeout(10000, "timeout exceeded")
timeout: ?string
join successful[0]
par timeout <- Peer.timeout(10000, "resource hasn't created: timeout exceeded")
timeout: ?string
join successful[0]
par timeout <- Peer.timeout(5000, "resource hasn't created: timeout exceeded")
if timeout == nil:
resource_id <<- id
else:
error <<- timeout!
if timeout == nil:
resource_id <<- id
else:
error <<- timeout!
<- resource_id, error
-- Register for a resource as provider
-- Note: resource must be already created
func registerProvider(resource_id: ResourceId, value: string, service_id: ?string) -> bool, *Error:
success: *bool
error: *Error
relay_id: ?string
relay_id <<- HOST_PEER_ID
@ -210,15 +215,18 @@ func registerProvider(resource_id: ResourceId, value: string, service_id: ?strin
if record_sig_result.success == false:
error <<- record_sig_result.error!
success <<- false
else:
record_signature = record_sig_result.signature!
key, error_get <- getResource(resource_id)
appendErrors(error, error_get)
successful: *bool
if key != nil:
if key == nil:
appendErrors(error, error_get)
success <<- false
else:
nodes <- getNeighbours(resource_id)
successful: *bool
for n <- nodes par:
error <<- n
on n:
try:
republish_res <- republishKey(key!)
@ -230,45 +238,46 @@ func registerProvider(resource_id: ResourceId, value: string, service_id: ?strin
successful <<- true
else:
error <<- put_res.error
par Peer.timeout(10000, "timeout exceeded")
timeout: ?string
join successful[0]
par timeout <- Peer.timeout(5000, "provider hasn't registered: timeout exceeded")
timeout: ?string
join successful[0]
par timeout <- Peer.timeout(10000, "provider hasn't registered: timeout exceeded")
success: *bool
if timeout == nil:
success <<- true
else:
success <<- false
error <<- timeout!
if timeout == nil:
success <<- true
else:
success <<- false
error <<- timeout!
<- success!, error
-- Register a node as provider to the given resource
-- Note: resource must be already created
func registerNodeProvider(provider_node_id: PeerId, resource_id: ResourceId, value: string, service_id: ?string) -> bool, *Error:
success: *bool
error: *Error
t <- Peer.timestamp_sec()
successful: *bool
on provider_node_id:
record_sig_result <- getHostRecordSignature(resource_id, value, nil, service_id, t)
if record_sig_result.success == false:
error <<- record_sig_result.error!
success <<- false
else:
record_signature = record_sig_result.signature!
key, error_get <- getResource(resource_id)
if key == nil:
appendErrors(error, error_get)
success <<- false
else:
republish_result <- republishKey(key!)
if republish_result.success == false:
error <<- republish_result.error
success <<- false
else:
r <- putHostRecord(resource_id, value, nil, service_id, t, record_signature)
nodes <- getNeighbours(resource_id)
successful: *bool
for n <- nodes par:
on n:
try:
@ -281,18 +290,16 @@ func registerNodeProvider(provider_node_id: PeerId, resource_id: ResourceId, val
successful <<- true
else:
error <<- prop_res.error
par Peer.timeout(10000, "timeout exceeded")
timeout: ?string
join successful[0]
par timeout <- Peer.timeout(10000, "provider hasn't registered: timeout exceeded")
timeout: ?string
join successful[0]
par timeout <- Peer.timeout(5000, "provider hasn't registered: timeout exceeded")
success: *bool
if timeout == nil:
success <<- true
else:
success <<- false
error <<- timeout!
if timeout == nil:
success <<- true
else:
success <<- false
error <<- timeout!
<- success!, error
@ -311,10 +318,14 @@ func resolveProviders(resource_id: ResourceId, ack: i16) -> []Record, *Error:
res <<- get_result.result
else:
error <<- get_result.error
par Peer.timeout(10000, "timeout exceeded")
join res[ack]
par Peer.timeout(10000, "")
timeout: ?string
join res[ack - 1]
par error <- Peer.timeout(5000, "timeout exceeded")
if timeout != nil:
error <<- timeout!
result <- Registry.merge(res)
if result.success == false:
error <<- result.error

View File

@ -9,9 +9,9 @@
"version": "1.0.0",
"license": "MIT",
"dependencies": {
"@fluencelabs/aqua": "^0.7.0-285",
"@fluencelabs/aqua": "0.7.1-297",
"@fluencelabs/aqua-lib": "^0.4.3",
"@fluencelabs/fluence": "0.21.6",
"@fluencelabs/fluence": "0.21.8",
"@fluencelabs/fluence-network-environment": "^1.0.13",
"@fluencelabs/registry": "../aqua",
"@fluencelabs/trust-graph": "^3.0.1"
@ -114,13 +114,13 @@
"integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg=="
},
"node_modules/@fluencelabs/aqua": {
"version": "0.7.0-285",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.7.0-285.tgz",
"integrity": "sha512-LvQyvuRh+IF6iK3SMGDeIOYyKolMSjQDxVsuVGKkZmhJXJl0BtX3ccah2QeQIjqa0ef1BtepLALDs+6vCeW2hw==",
"version": "0.7.1-297",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.7.1-297.tgz",
"integrity": "sha512-p3mLYQHsHLJecx2794eHsy/dWdv6FonqTkI8//NRM+Qvjo10IBExRBuUIddOwtXvFxhuJvUCMn3q+y/A4CwF/g==",
"dependencies": {
"@fluencelabs/aqua-ipfs": "0.5.2",
"@fluencelabs/aqua-lib": "0.4.0",
"@fluencelabs/fluence": "0.21.5",
"@fluencelabs/fluence": "0.21.8",
"@fluencelabs/fluence-network-environment": "1.0.13",
"ipfs-http-client": "50.1.2"
},
@ -152,62 +152,6 @@
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-lib/-/aqua-lib-0.4.0.tgz",
"integrity": "sha512-bad282cCZrE//I+Hzsl/vWgudwXuNiaqJOonv11xkgOBBvL7Gg3SIap8HioNvkaDxIvylVB+POjYJ7E5sGNoVQ=="
},
"node_modules/@fluencelabs/aqua/node_modules/@fluencelabs/fluence": {
"version": "0.21.5",
"resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.21.5.tgz",
"integrity": "sha512-Zldn2I09ENp+F4MDYxsIMkJQOIQyfpiYmcAmVl60yTdKls78GmmnSyvAI+dZxUcNrhPqscnrtaENJoKwGwgm+Q==",
"dependencies": {
"@chainsafe/libp2p-noise": "^4.1.1",
"@fluencelabs/avm": "^0.21.3",
"@fluencelabs/avm-runner-background": "0.2.0",
"@fluencelabs/avm-runner-interface": "^0.2.0",
"@fluencelabs/marine-js": "0.1.0",
"async": "3.2.0",
"browser-or-node": "^2.0.0",
"bs58": "4.0.1",
"buffer": "^6.0.3",
"cids": "0.8.1",
"it-length-prefixed": "3.0.1",
"it-pipe": "1.1.0",
"libp2p": "=0.33.0",
"libp2p-crypto": "=0.20.0",
"libp2p-mplex": "=0.10.2",
"libp2p-websockets": "^0.16.2",
"loglevel": "1.7.0",
"multiaddr": "^10.0.1",
"multiformats": "^9.6.4",
"peer-id": "=0.15.4",
"rxjs": "^7.3.0",
"ts-pattern": "^3.3.3",
"uuid": "8.3.0"
},
"bin": {
"copy-avm-public": "dist/tools/copyAvmPublic.js"
}
},
"node_modules/@fluencelabs/aqua/node_modules/buffer": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
"integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
],
"dependencies": {
"base64-js": "^1.3.1",
"ieee754": "^1.2.1"
}
},
"node_modules/@fluencelabs/avm": {
"version": "0.21.6",
"resolved": "https://registry.npmjs.org/@fluencelabs/avm/-/avm-0.21.6.tgz",
@ -235,9 +179,9 @@
"integrity": "sha512-Y41pL+UwZZVdormxju8cJQsNRp6tdER0VqJ9Kg9gH2wd1KJAaYTJkyVbn8NB7fEFRUbqfbb1BXHi9wWBYOgGYQ=="
},
"node_modules/@fluencelabs/fluence": {
"version": "0.21.6",
"resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.21.6.tgz",
"integrity": "sha512-g0nbg6IeBdivcU7jutb3M6UdNrUvVX4IIQKsZ80y6yzVqeWTqHbYsb+6q0zzv12q4OllpO4lcUWKUbUQyl4QMg==",
"version": "0.21.8",
"resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.21.8.tgz",
"integrity": "sha512-QeCYdPZhCsxZTxlMzXGOKPqP9rzkVh/FpNZaf60JcmMu07tMcpOxvhu26wDni2QugifRvh26/tkSQ6GN3ceg3A==",
"dependencies": {
"@chainsafe/libp2p-noise": "^4.1.1",
"@fluencelabs/avm": "^0.21.3",
@ -245,7 +189,6 @@
"@fluencelabs/avm-runner-interface": "^0.2.0",
"@fluencelabs/marine-js": "0.1.0",
"async": "3.2.0",
"browser-or-node": "^2.0.0",
"bs58": "4.0.1",
"buffer": "^6.0.3",
"cids": "0.8.1",
@ -259,6 +202,7 @@
"multiaddr": "^10.0.1",
"multiformats": "^9.6.4",
"peer-id": "=0.15.4",
"platform": "^1.3.6",
"rxjs": "^7.3.0",
"ts-pattern": "^3.3.3",
"uuid": "8.3.0"
@ -3755,6 +3699,11 @@
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
},
"node_modules/platform": {
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz",
"integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg=="
},
"node_modules/private-ip": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/private-ip/-/private-ip-2.3.3.tgz",
@ -4370,13 +4319,13 @@
}
},
"@fluencelabs/aqua": {
"version": "0.7.0-285",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.7.0-285.tgz",
"integrity": "sha512-LvQyvuRh+IF6iK3SMGDeIOYyKolMSjQDxVsuVGKkZmhJXJl0BtX3ccah2QeQIjqa0ef1BtepLALDs+6vCeW2hw==",
"version": "0.7.1-297",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.7.1-297.tgz",
"integrity": "sha512-p3mLYQHsHLJecx2794eHsy/dWdv6FonqTkI8//NRM+Qvjo10IBExRBuUIddOwtXvFxhuJvUCMn3q+y/A4CwF/g==",
"requires": {
"@fluencelabs/aqua-ipfs": "0.5.2",
"@fluencelabs/aqua-lib": "0.4.0",
"@fluencelabs/fluence": "0.21.5",
"@fluencelabs/fluence": "0.21.8",
"@fluencelabs/fluence-network-environment": "1.0.13",
"ipfs-http-client": "50.1.2"
},
@ -4385,45 +4334,6 @@
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-lib/-/aqua-lib-0.4.0.tgz",
"integrity": "sha512-bad282cCZrE//I+Hzsl/vWgudwXuNiaqJOonv11xkgOBBvL7Gg3SIap8HioNvkaDxIvylVB+POjYJ7E5sGNoVQ=="
},
"@fluencelabs/fluence": {
"version": "0.21.5",
"resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.21.5.tgz",
"integrity": "sha512-Zldn2I09ENp+F4MDYxsIMkJQOIQyfpiYmcAmVl60yTdKls78GmmnSyvAI+dZxUcNrhPqscnrtaENJoKwGwgm+Q==",
"requires": {
"@chainsafe/libp2p-noise": "^4.1.1",
"@fluencelabs/avm": "^0.21.3",
"@fluencelabs/avm-runner-background": "0.2.0",
"@fluencelabs/avm-runner-interface": "^0.2.0",
"@fluencelabs/marine-js": "0.1.0",
"async": "3.2.0",
"browser-or-node": "^2.0.0",
"bs58": "4.0.1",
"buffer": "^6.0.3",
"cids": "0.8.1",
"it-length-prefixed": "3.0.1",
"it-pipe": "1.1.0",
"libp2p": "=0.33.0",
"libp2p-crypto": "=0.20.0",
"libp2p-mplex": "=0.10.2",
"libp2p-websockets": "^0.16.2",
"loglevel": "1.7.0",
"multiaddr": "^10.0.1",
"multiformats": "^9.6.4",
"peer-id": "=0.15.4",
"rxjs": "^7.3.0",
"ts-pattern": "^3.3.3",
"uuid": "8.3.0"
}
},
"buffer": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
"integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
"requires": {
"base64-js": "^1.3.1",
"ieee754": "^1.2.1"
}
}
}
},
@ -4468,9 +4378,9 @@
"integrity": "sha512-Y41pL+UwZZVdormxju8cJQsNRp6tdER0VqJ9Kg9gH2wd1KJAaYTJkyVbn8NB7fEFRUbqfbb1BXHi9wWBYOgGYQ=="
},
"@fluencelabs/fluence": {
"version": "0.21.6",
"resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.21.6.tgz",
"integrity": "sha512-g0nbg6IeBdivcU7jutb3M6UdNrUvVX4IIQKsZ80y6yzVqeWTqHbYsb+6q0zzv12q4OllpO4lcUWKUbUQyl4QMg==",
"version": "0.21.8",
"resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.21.8.tgz",
"integrity": "sha512-QeCYdPZhCsxZTxlMzXGOKPqP9rzkVh/FpNZaf60JcmMu07tMcpOxvhu26wDni2QugifRvh26/tkSQ6GN3ceg3A==",
"requires": {
"@chainsafe/libp2p-noise": "^4.1.1",
"@fluencelabs/avm": "^0.21.3",
@ -4478,7 +4388,6 @@
"@fluencelabs/avm-runner-interface": "^0.2.0",
"@fluencelabs/marine-js": "0.1.0",
"async": "3.2.0",
"browser-or-node": "^2.0.0",
"bs58": "4.0.1",
"buffer": "^6.0.3",
"cids": "0.8.1",
@ -4492,6 +4401,7 @@
"multiaddr": "^10.0.1",
"multiformats": "^9.6.4",
"peer-id": "=0.15.4",
"platform": "^1.3.6",
"rxjs": "^7.3.0",
"ts-pattern": "^3.3.3",
"uuid": "8.3.0"
@ -7358,6 +7268,11 @@
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
},
"platform": {
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz",
"integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg=="
},
"private-ip": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/private-ip/-/private-ip-2.3.3.tgz",

View File

@ -19,8 +19,8 @@
"dependencies": {
"@fluencelabs/registry": "../aqua",
"@fluencelabs/aqua-lib": "^0.4.3",
"@fluencelabs/aqua": "^0.7.0-285",
"@fluencelabs/fluence": "0.21.6",
"@fluencelabs/aqua": "0.7.1-297",
"@fluencelabs/fluence": "0.21.8",
"@fluencelabs/fluence-network-environment": "^1.0.13",
"@fluencelabs/trust-graph": "^3.0.1"
},

View File

@ -1,7 +1,7 @@
module Export
import createResourceAndRegisterNodeProvider, resolveProviders from "@fluencelabs/registry/resources-api.aqua"
import createResourceAndRegisterProvider, createResourceAndRegisterNodeProvider, createResource, registerNodeProvider, registerProvider, resolveProviders from "@fluencelabs/registry/resources-api.aqua"
import Peer from "@fluencelabs/aqua-lib/builtin.aqua"
export createResourceAndRegisterNodeProvider, resolveProviders, timestamp_sec
export createResourceAndRegisterProvider, createResourceAndRegisterNodeProvider, resolveProviders, createResource, registerNodeProvider, registerProvider, timestamp_sec
func timestamp_sec() -> u64:

View File

@ -1,6 +1,8 @@
import {Fluence, KeyPair} from "@fluencelabs/fluence";
import { krasnodar, Node } from "@fluencelabs/fluence-network-environment";
import {createResourceAndRegisterNodeProvider, resolveProviders, timestamp_sec} from "./generated/export";
import { krasnodar, Node, } from "@fluencelabs/fluence-network-environment";
import { allowServiceFn, and, or } from "@fluencelabs/fluence/dist/internal/builtins/Sig";
import {createResourceAndRegisterProvider, registerNodeProvider, createResourceAndRegisterNodeProvider, createResource, registerProvider, resolveProviders, timestamp_sec} from "./generated/export";
import assert from "assert";
let local: Node[] = [
{
@ -23,28 +25,33 @@ let local: Node[] = [
async function main() {
// connect to the Fluence network
await Fluence.start({ connectTo: krasnodar[0] });
console.log("%s", await timestamp_sec());
console.log(
"📗 created a fluence peer %s with relay %s",
Fluence.getStatus().peerId,
Fluence.getStatus().relayPeerId
);
// TODO: remove after fluence-js update
let sig = Fluence.getPeer().getServices().sig;
sig.securityGuard = or(sig.securityGuard, allowServiceFn("registry", "get_key_bytes"));
let label = "myLabel";
let value = "myValue";
console.log("Will create resource with label:", label);
// create route (if not exists) and register on it
let [resource_id, error] = await createResourceAndRegisterNodeProvider(krasnodar[0].peerId,
label, value, "identity"
);
let [resource_id, create_error] = await createResource(label);
if (resource_id !== null) {
// find other peers on this route
console.log("let's resolve route for %s", resource_id);
let [providers, error] = await resolveProviders(resource_id, 5);
console.log("route providers:", providers);
} else {
console.error(error);
}
assert(resource_id !== null, create_error.toString());
console.log("resource %s created successfully", resource_id);
let node_provider = krasnodar[1].peerId;
let [node_success, reg_node_error] = await registerNodeProvider(node_provider, resource_id, value, "identity");
assert(node_success, reg_node_error.toString());
console.log("node %s registered as provider successfully", node_provider);
let [success, reg_error] = await registerProvider(resource_id, value, "identity");
console.log("peer %s registered as provider successfully", Fluence.getStatus().peerId);
assert(success, reg_error.toString());
let [providers, error] = await resolveProviders(resource_id, 2);
console.log("route providers:", providers);
}
main().then(() => process.exit(0))