mirror of
https://github.com/fluencelabs/registry.git
synced 2025-06-28 23:31:36 +00:00
aqua: fix bugs in API (#104)
This commit is contained in:
committed by
GitHub
parent
7671235b02
commit
6b320dd95f
@ -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
|
||||
|
||||
|
@ -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,29 +68,30 @@ 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
|
||||
success: *bool
|
||||
join successful[0]
|
||||
par timeout <- Peer.timeout(10000, "resource hasn't created: timeout exceeded")
|
||||
par timeout <- Peer.timeout(6000, "resource hasn't created: timeout exceeded")
|
||||
|
||||
if timeout == nil:
|
||||
resource_id <<- id
|
||||
@ -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,11 +137,10 @@ 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")
|
||||
par timeout <- Peer.timeout(5000, "resource hasn't created: timeout exceeded")
|
||||
|
||||
if timeout == nil:
|
||||
resource_id <<- id
|
||||
@ -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,11 +188,10 @@ 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")
|
||||
par timeout <- Peer.timeout(5000, "resource hasn't created: timeout exceeded")
|
||||
|
||||
if timeout == nil:
|
||||
resource_id <<- id
|
||||
@ -199,6 +203,7 @@ func createResourceAndRegisterNodeProvider(provider_node_id: PeerId, label: stri
|
||||
-- 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)
|
||||
if key == nil:
|
||||
appendErrors(error, error_get)
|
||||
|
||||
successful: *bool
|
||||
if key != nil:
|
||||
success <<- false
|
||||
else:
|
||||
nodes <- getNeighbours(resource_id)
|
||||
successful: *bool
|
||||
for n <- nodes par:
|
||||
error <<- n
|
||||
on n:
|
||||
try:
|
||||
republish_res <- republishKey(key!)
|
||||
@ -230,14 +238,11 @@ 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(10000, "provider hasn't registered: timeout exceeded")
|
||||
par timeout <- Peer.timeout(5000, "provider hasn't registered: timeout exceeded")
|
||||
|
||||
success: *bool
|
||||
if timeout == nil:
|
||||
success <<- true
|
||||
else:
|
||||
@ -249,26 +254,30 @@ func registerProvider(resource_id: ResourceId, value: string, service_id: ?strin
|
||||
-- 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,13 +290,11 @@ 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")
|
||||
par timeout <- Peer.timeout(5000, "provider hasn't registered: timeout exceeded")
|
||||
|
||||
success: *bool
|
||||
if timeout == nil:
|
||||
success <<- true
|
||||
else:
|
||||
@ -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
|
||||
|
141
example/package-lock.json
generated
141
example/package-lock.json
generated
@ -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",
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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:
|
||||
|
@ -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);
|
||||
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);
|
||||
} else {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
|
||||
main().then(() => process.exit(0))
|
||||
|
Reference in New Issue
Block a user