diff --git a/src/boot/services/blockchain/index.ts b/src/boot/services/blockchain/index.ts index 72b7cae8..8b039f1c 100644 --- a/src/boot/services/blockchain/index.ts +++ b/src/boot/services/blockchain/index.ts @@ -1,6 +1,15 @@ import { abis } from 'src/consts' import { createPool } from './pool' import { commitTx } from './tx-commiter' + +const VetDomainsResolverByGid: Record = { + // MainNet Resolver Utility + '0x00000000851caf3cfdb6e899cf5958bfb1ac3413d346d43539627e6be7ec1b4a': '0xA11413086e163e41901bb81fdc5617c975Fa5a1A', + + // TestNet Resolver Utility + '0x000000000b2bce3c70bc649a02749e8687721b09ed2e15997f466536b20bb127': '0xc403b8EA53F707d7d4de095f0A20bC491Cf2bc94' +} + function serve(gid: string, pool: ReturnType) { return { get thor() { return pool.get(gid).thor }, @@ -19,6 +28,64 @@ function serve(gid: string, pool: ReturnType) { }, commitTx(raw: string) { commitTx(pool.resoleNode(gid).url, raw) + }, + vetDomainsAddressesOf(names: string[]) { + if (!VetDomainsResolverByGid[gid]) { return [] } + + const vetDomainsResolver = VetDomainsResolverByGid[gid] + return this.thor + .account(vetDomainsResolver) + .method({ + inputs: [ + { + internalType: 'string[]', + name: 'names', + type: 'string[]' + } + ], + name: 'getAddresses', + outputs: [ + { + internalType: 'address[]', + name: 'addresses', + type: 'address[]' + } + ], + stateMutability: 'view', + type: 'function' + }) + .cache([]) + .call(names) + .then(output => output.decoded.addresses) + }, + vetDomainsNamesOf(addresses: string[]) { + if (!VetDomainsResolverByGid[gid]) { return [] } + + const vetDomainsResolver = VetDomainsResolverByGid[gid] + return this.thor + .account(vetDomainsResolver) + .method({ + inputs: [ + { + internalType: 'address[]', + name: 'addresses', + type: 'address[]' + } + ], + name: 'getNames', + outputs: [ + { + internalType: 'string[]', + name: 'names', + type: 'string[]' + } + ], + stateMutability: 'view', + type: 'function' + }) + .cache([]) + .call(addresses) + .then(output => output.decoded.names) } } } diff --git a/src/pages/Send/Controller.vue b/src/pages/Send/Controller.vue index 24b2d9a8..1dfe0ed1 100644 --- a/src/pages/Send/Controller.vue +++ b/src/pages/Send/Controller.vue @@ -13,6 +13,7 @@ -