Flow 구성: Aprende FCL - 4. Como resolver identidades en .find a direcciones en Flow
이력서
En este artículo, aprenderemos como usar un contrato desplegado e interactuar con él. Interactuar Contractos Existentes en la Blockchain es un parte esencial de lo que hace a la Web3 especial.
En este tutorial específico:
.find
a una dirección 0x
en Flow (.find → 0x) .find
para una cuenta para una dirección 0x
en Flow (0x0 → .find"Aprende FCL"소개
Si trabajaste a través de alguno de nuestros post previos deberías saber como pasar argumentos a scripts en Cadence. Necesitaremos este conocimiento ya que en este 튜토리얼 pasaremos valores
String
yAddress
.엠페세모스! 💪
준비
Cuando quieras interactuar con algún contrato desplegado, Primero necesitas descubrir donde esta desplegado 😅. En nuestro ejemplo específico, .find es un servicio conocido y con la ayuda de su creador Bjarte fuimos capaces de encontrar la dirección del repositorio en GitHub en https://github.com/findonflow/find .
💡 Pro Tip: puedes encontrar cualquier contrato que quieras, mientras tengas un hash de la transacción o una dirección de una cuenta que haya interactuado con el contrato en el pasado. Solo visita su historia en flowscan.org!
De vuelta a .find! Excavando un poco, puedes encontrar toda la información que necesitas dentro del archivo integration.md . 특히 Cadence que usaremos como nuestros resolveores에 코드를 작성하십시오. Este método para encontrar un nombre a través de una dirección:
import FIND from 0x097bafa4e0b48eef
pub fun main(name: String): Address?{
return FIND.lookupAddress(name)
}
Y este otro para el proceso reverso:
import FIND from 0x097bafa4e0b48eef
pub fun main(address: Address) : String?{
return FIND.reverseLookup(address)
}
파소 1 - 인스탈라시온
Agrega "onflow/fcl": "1.0.0"
는 의존성입니다.
파소 2 - 설정
Como la última vez importaremos los métodos necesarios para configurar FCL:
//Importamos métodos de FCL
import { query, config } from "@onflow/fcl";
// Especifica el endpoint de la API - esta vez usaremos Mainnet
const api = "<https://rest-mainnet.onflow.org>";
// Configurar FCL para usar Testnet como el nodo de acceso
config().put("accessNode.api", api);
Paso 3 - Resolver una Alias de Identidad a una dirección
Ahora crearemos una función llamadaresolveName
. Esta función aceptará un parametro String
, pasa este a la blockchain junto con nuestro código resolveor e imprime el resultado:
const resolveName = async (name) => {
// El codigo Cadence que podemos obtener del script "resolve.cdc":
// <https://github.com/findonflow/find/blob/main/scripts/resolve.cdc>
// El contrato de .find está deployado en la Mainnet de Flow en la dirección "0x097bafa4e0b48eef"
// usaremos esta direccion en la declaración de importación
const cadence = `
import FIND from 0x097bafa4e0b48eef
pub fun main(name: String): Address?{
return FIND.lookupAddress(name) // we'll use .find's native lookupAddress method.
}
`;
const args = (arg, t) => [arg(name, t.String)];
// "query" es usado para operaciones de sólo lectura en la blockchain.
// lee más acerca del método "query" en la pagina web de la documentación de Flow:
// <https://docs.onflow.org/fcl/reference/api/#query>
const address = await query({ cadence, args });
console.log(
`${name} identity has address %c${address}`,
"color: #36ad68; font-weight: bold"
);
};
Paso 4 - Alias de Identidad의 리졸버 방향
Hagamos algo 유사한 para revertir el proceso. Crearemos una función llamadaresolveAddress
que acepta una dirección pasada comoString
.
const resolveAddress = async (address) => {
// El código Cadence para resolver una direccion como argumento
// a una Address lo podemos obtener del script "name.cdc"
// <https://github.com/findonflow/find/blob/main/scripts/name.cdc>
// El contrato de .FIND esta deployado en la dirección "0x097bafa4e0b48eef" - usaremos esa dirección en la declaración de importación.
const cadence = `
import FIND from 0x097bafa4e0b48eef
pub fun main(address: Address) : String?{
return FIND.reverseLookup(address) // nota la nueva función
}
`;
const args = (arg, t) => [arg(address, t.Address)];
// "query" pasara código en Cadence para acceder al nodo para su ejecución y nos retornará un resultado
// lee más acerca del método "query" en la documentación de Flow.
// <https://docs.onflow.org/fcl/reference/api/#query>
const name = await query({ cadence, args });
console.log(
`${address} address is aliased to %c${name}`,
"color: #36ad68; font-weight: bold"
);
};
마무리
Llamemos las funciones que creamos al final del archivo usando algunos parametros de prueba.
❕Nota: Estamos llamando a esos métodos dentro de una IIFE por simplicidad. Uno puede imaginar ejecutándolos con un botón o como parte de un procedimiento más complejo.
Ejecutar este código debería emitir esto a la consola:
bjartek identity has address 0x886f3aeaf848c535
0x886f3aeaf848c535 address is aliased to bjartek
Puedes encontrar el código completo en este Codesandbox .
이제 곧! 👋
재귀
Como la última vez importaremos los métodos necesarios para configurar FCL:
//Importamos métodos de FCL
import { query, config } from "@onflow/fcl";
// Especifica el endpoint de la API - esta vez usaremos Mainnet
const api = "<https://rest-mainnet.onflow.org>";
// Configurar FCL para usar Testnet como el nodo de acceso
config().put("accessNode.api", api);
Paso 3 - Resolver una Alias de Identidad a una dirección
Ahora crearemos una función llamadaresolveName
. Esta función aceptará un parametro String
, pasa este a la blockchain junto con nuestro código resolveor e imprime el resultado:
const resolveName = async (name) => {
// El codigo Cadence que podemos obtener del script "resolve.cdc":
// <https://github.com/findonflow/find/blob/main/scripts/resolve.cdc>
// El contrato de .find está deployado en la Mainnet de Flow en la dirección "0x097bafa4e0b48eef"
// usaremos esta direccion en la declaración de importación
const cadence = `
import FIND from 0x097bafa4e0b48eef
pub fun main(name: String): Address?{
return FIND.lookupAddress(name) // we'll use .find's native lookupAddress method.
}
`;
const args = (arg, t) => [arg(name, t.String)];
// "query" es usado para operaciones de sólo lectura en la blockchain.
// lee más acerca del método "query" en la pagina web de la documentación de Flow:
// <https://docs.onflow.org/fcl/reference/api/#query>
const address = await query({ cadence, args });
console.log(
`${name} identity has address %c${address}`,
"color: #36ad68; font-weight: bold"
);
};
Paso 4 - Alias de Identidad의 리졸버 방향
Hagamos algo 유사한 para revertir el proceso. Crearemos una función llamadaresolveAddress
que acepta una dirección pasada comoString
.
const resolveAddress = async (address) => {
// El código Cadence para resolver una direccion como argumento
// a una Address lo podemos obtener del script "name.cdc"
// <https://github.com/findonflow/find/blob/main/scripts/name.cdc>
// El contrato de .FIND esta deployado en la dirección "0x097bafa4e0b48eef" - usaremos esa dirección en la declaración de importación.
const cadence = `
import FIND from 0x097bafa4e0b48eef
pub fun main(address: Address) : String?{
return FIND.reverseLookup(address) // nota la nueva función
}
`;
const args = (arg, t) => [arg(address, t.Address)];
// "query" pasara código en Cadence para acceder al nodo para su ejecución y nos retornará un resultado
// lee más acerca del método "query" en la documentación de Flow.
// <https://docs.onflow.org/fcl/reference/api/#query>
const name = await query({ cadence, args });
console.log(
`${address} address is aliased to %c${name}`,
"color: #36ad68; font-weight: bold"
);
};
마무리
Llamemos las funciones que creamos al final del archivo usando algunos parametros de prueba.
❕Nota: Estamos llamando a esos métodos dentro de una IIFE por simplicidad. Uno puede imaginar ejecutándolos con un botón o como parte de un procedimiento más complejo.
Ejecutar este código debería emitir esto a la consola:
bjartek identity has address 0x886f3aeaf848c535
0x886f3aeaf848c535 address is aliased to bjartek
Puedes encontrar el código completo en este Codesandbox .
이제 곧! 👋
재귀
const resolveName = async (name) => {
// El codigo Cadence que podemos obtener del script "resolve.cdc":
// <https://github.com/findonflow/find/blob/main/scripts/resolve.cdc>
// El contrato de .find está deployado en la Mainnet de Flow en la dirección "0x097bafa4e0b48eef"
// usaremos esta direccion en la declaración de importación
const cadence = `
import FIND from 0x097bafa4e0b48eef
pub fun main(name: String): Address?{
return FIND.lookupAddress(name) // we'll use .find's native lookupAddress method.
}
`;
const args = (arg, t) => [arg(name, t.String)];
// "query" es usado para operaciones de sólo lectura en la blockchain.
// lee más acerca del método "query" en la pagina web de la documentación de Flow:
// <https://docs.onflow.org/fcl/reference/api/#query>
const address = await query({ cadence, args });
console.log(
`${name} identity has address %c${address}`,
"color: #36ad68; font-weight: bold"
);
};
Hagamos algo 유사한 para revertir el proceso. Crearemos una función llamada
resolveAddress
que acepta una dirección pasada comoString
.const resolveAddress = async (address) => {
// El código Cadence para resolver una direccion como argumento
// a una Address lo podemos obtener del script "name.cdc"
// <https://github.com/findonflow/find/blob/main/scripts/name.cdc>
// El contrato de .FIND esta deployado en la dirección "0x097bafa4e0b48eef" - usaremos esa dirección en la declaración de importación.
const cadence = `
import FIND from 0x097bafa4e0b48eef
pub fun main(address: Address) : String?{
return FIND.reverseLookup(address) // nota la nueva función
}
`;
const args = (arg, t) => [arg(address, t.Address)];
// "query" pasara código en Cadence para acceder al nodo para su ejecución y nos retornará un resultado
// lee más acerca del método "query" en la documentación de Flow.
// <https://docs.onflow.org/fcl/reference/api/#query>
const name = await query({ cadence, args });
console.log(
`${address} address is aliased to %c${name}`,
"color: #36ad68; font-weight: bold"
);
};
마무리
Llamemos las funciones que creamos al final del archivo usando algunos parametros de prueba.
❕Nota: Estamos llamando a esos métodos dentro de una IIFE por simplicidad. Uno puede imaginar ejecutándolos con un botón o como parte de un procedimiento más complejo.
Ejecutar este código debería emitir esto a la consola:
bjartek identity has address 0x886f3aeaf848c535
0x886f3aeaf848c535 address is aliased to bjartek
Puedes encontrar el código completo en este Codesandbox .
이제 곧! 👋
재귀
❕Nota: Estamos llamando a esos métodos dentro de una IIFE por simplicidad. Uno puede imaginar ejecutándolos con un botón o como parte de un procedimiento más complejo.
bjartek identity has address 0x886f3aeaf848c535
0x886f3aeaf848c535 address is aliased to bjartek
Código del ejemplo: https://codesandbox.io/s/dev-to-fcl-resolve-find-name-9tbo8e
Cadence Imports - https://docs.onflow.org/cadence/language/imports/ - Cadence에서 선언문
import
을 문서화합니다. .find GitHub 리포지토리 - https://github.com/findonflow/find - .find에 대한 완전한 문서화 및 문서화.
Otros recursos que podrías encontrar útil:
Flow 문서 - https://docs.onflow.org/ - Flow와 상호 작용하는 블록체인에 대한 자세한 정보를 제공합니다.
Flow Portal - https://flow.com/ - Flow를 입력하는 포털입니다.
FCL JS - https://github.com/onflow/fcl-js - Código fuente y la habilidad de contribuir a la libreria de FCL JS.
케이던스 - https://docs.onflow.org/cadence/ - 케이던스를 소개합니다.
Codesandbox - https://codesandbox.io - 프로토타입에 대한 일반 텍스트 편집기가 탐색되지 않습니다.
Reference
이 문제에 관하여(Flow 구성: Aprende FCL - 4. Como resolver identidades en .find a direcciones en Flow), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/onflow/construye-en-flow-aprende-fcl-4-como-resolver-identidades-en-find-a-direcciones-en-flow-26nm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)