Primeros pasos con Amazon Managed Blockchain (AMB) Acceda a Bitcoin - AMBAccede a Bitcoin

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Primeros pasos con Amazon Managed Blockchain (AMB) Acceda a Bitcoin

Utilice los step-by-step tutoriales de esta sección para aprender a realizar tareas con Amazon Managed Blockchain (AMB) Access Bitcoin. Estos ejemplos requieren que complete algunos requisitos previos. Si es la primera vez que AMB utiliza Access Bitcoin, consulte la sección de configuración de esta guía para asegurarse de que ha completado esos requisitos previos. Para obtener más información, consulte Configuración de Amazon Managed Blockchain (AMB) Access Bitcoin.

Cree una IAM política para acceder a Bitcoin - JSON RPCs

Para acceder a los puntos finales públicos de la red principal y la red de pruebas de Bitcoin para realizar JSON RPC llamadas, debe tener credenciales de usuario (AWS_ACCESS_ KEY _ID y _ AWS_SECRET ACCESS _KEY) que tengan los IAM permisos adecuados para Amazon Managed Blockchain (AMB) Access Bitcoin. En una terminal con AWS CLI instalado, ejecute el siguiente comando para crear una IAM política que permita acceder a los dos puntos finales de Bitcoin:

cat <<EOT > ~/amb-btc-access-policy.json { "Version": "2012-10-17", "Statement": [ { "Sid" : "AMBBitcoinAccessPolicy", "Effect": "Allow", "Action": [ "managedblockchain:InvokeRpcBitcoin*" ], "Resource": "*" } ] } EOT aws iam create-policy --policy-name AmazonManagedBlockchainBitcoinAccess --policy-document file://$HOME/amb-btc-access-policy.json
nota

El ejemplo anterior te da acceso tanto a la red principal como a la red de pruebas de Bitcoin. Para acceder a un punto final específico, usa el siguiente comando: Action

  • "managedblockchain:InvokeRpcBitcoinMainnet"

  • "managedblockchain:InvokeRpcBitcoinTestnet"

Después de crear la política, adjúntela al rol de su IAM usuario para que surta efecto. En el navegador AWS Management Console, navegue hasta el IAM servicio y adjunte la política AmazonManagedBlockchainBitcoinAccess al rol asignado a su IAM usuario. Para obtener más información, consulte Crear un rol y asignarlo a un IAM usuario.

Realice solicitudes de llamada a procedimientos remotos de Bitcoin (RPC) en el RPC editor de AMB Access mediante el AWS Management Console

Puede editar y enviar llamadas a procedimientos remotos (RPCs) en el AWS Management Console mediante AMB Access. Con ellasRPCs, puede leer datos, escribir y enviar transacciones en la red Bitcoin.

El siguiente ejemplo muestra cómo obtener información sobre el blockhash00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09 mediante. getBlock RPC Sustituya las variables resaltadas por sus propias entradas o elija uno de los otros métodos de la lista e introduzca las entradas pertinentes necesarias. RPC

  1. Abre la consola de Managed Blockchain en https://console.aws.amazon.com/managedblockchain/.

  2. Elija el RPCeditor.

  3. En la sección Solicitud, elige BITCOIN_MAINNET como Blockchain Network.

  4. Elija getblock como RPCmétodo.

  5. Introduzca 00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09 como número de bloque y elija 0 como verbosidad.

  6. A continuación, seleccione Submit (Enviar)RPC.

  7. Obtendrá los resultados en la sección de respuestas de esta página. A continuación, puede copiar todas las transacciones sin procesar para analizarlas más a fondo o utilizarlas en la lógica empresarial de sus aplicaciones.

Para obtener más información, consulte la RPCspágina compatible con AMB Access Bitcoin

Haga que AMB Access Bitcoin JSON RPC solicite en awscurl utilizando el AWS CLI

Firme las solicitudes con sus credenciales de IAM usuario mediante la versión 4 de Signature (SiGv4) para realizar RPC llamadas en Bitcoin a los AMB puntos JSON finales de Access Bitcoin. La herramienta de línea de comandos awscurl puede ayudarle a firmar solicitudes para AWS servicios que utilizan SiGv4. Para obtener más información, consulte READMEawscurl .md.

Instale awscurl mediante el método apropiado para su sistema operativo. En macOS, la aplicación recomendada HomeBrew es:

brew install awscurl

Si ya ha instalado y configurado el AWS CLI, sus credenciales IAM de usuario y su AWS región predeterminada están configuradas en su entorno y tienen acceso a awscurl. Con awscurl, envíe una solicitud tanto a la red principal como a la red de pruebas de Bitcoin invocando la. getblock RPC Esta llamada acepta un parámetro de cadena correspondiente al hash del bloque del que desea recuperar información.

El siguiente comando recupera los datos del encabezado del bloque de la red principal de Bitcoin utilizando el hash de bloque de la params matriz para seleccionar el bloque específico del que se van a recuperar los encabezados. En este ejemplo se utiliza el punto final. us-east-1 Puedes sustituirlo por tu Bitcoin preferidoJSON, RPC y AWS Región compatible con Amazon Managed Blockchain (AMB) Access Bitcoin. Además, puede realizar una solicitud en la red Testnet, en lugar de en la red principal, mainnet sustituyéndola por testnet en el comando.

awscurl -X POST -d '{ "jsonrpc": "1.0", "id": "getblockheader-curltest", "method": "getblockheader", "params": ["0000000000000000000105bebab2f9dd16234a30950d38ec6ddc24d466e750a0"] }' --service managedblockchain https://mainnet.bitcoin.managedblockchain.us-east-1.amazonaws.com --region us-east-1 -k

Los resultados incluyen detalles de las cabeceras de los bloques y una lista de los hashes de transacciones incluidos en el bloque solicitado. Vea el siguiente ejemplo:

{"result":{"hash":"0000000000000000000105bebab2f9dd16234a30950d38ec6ddc24d466e750a0", "confirmations":2,"height":799243,"version":664485888,"versionHex":"279b4000", "merkleroot":"568e79752e1921ecf40c961435abb41bc5700fe2833ecadc4abfc2f615ddc1b8", "time":1689684290,"mediantime":1689681317,"nonce":2091174943,"bits":"17053894", "difficulty":53911173001054.59, "chainwork":"00000000000000000000000000000000000000004f375cf72ff64e2404c1589c", "nTx":2135, "previousblockhash":"00000000000000000002ffe4efe07ae74ec8b92c7696f5e12b5da506f015ba6b", "nextblockhash":"000000000000000000038f05ddcf3f483fdcb74f4be606c022bcb673424fa4ca"}, "error":null,"id":"curltest"}

Realice RPC solicitudes de Bitcoin JSON en Node.js

Puede enviar solicitudes firmadas utilizando el módulo https nativo de Node.js HTTPS para acceder a los puntos finales de la red principal y la red de pruebas de Bitcoin y realizar JSON RPC API llamadas con el módulo https nativo de, o puede utilizar una biblioteca de terceros, como. AXIOS En el siguiente ejemplo, se muestra cómo realizar una RPC solicitud de Bitcoin a los JSON puntos finales de AMB Access Bitcoin.

Para ejecutar este script Node.js de ejemplo, aplique los siguientes requisitos previos:

  1. Debe tener el administrador de versiones de nodos (nvm) y Node.js instalados en el equipo. Puede encontrar las instrucciones de instalación de su sistema operativo aquí.

  2. Utilice el node --version comando y confirme que está utilizando la versión 14 o superior de Node. Si es necesario, puede usar el nvm install 14 comando, seguido del nvm use 14 comando, para instalar la versión 14.

  3. Las variables AWS_ACCESS_KEY_ID de entorno AWS_SECRET_ACCESS_KEY deben contener las credenciales asociadas a su cuenta. Las variables de entorno AMB_HTTP_ENDPOINT deben contener sus puntos de conexión de AMB Access Bitcoin.

    Exporte estas variables como cadenas en su cliente mediante los siguientes comandos. Sustituya los valores resaltados en las siguientes cadenas por los valores adecuados de su cuenta de IAM usuario.

    export AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE" export AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"

Tras completar todos los requisitos previos, copie el siguiente package.json archivo y index.js script en su entorno local mediante el editor:

package.json

{ "name": "bitcoin-rpc", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "@aws-crypto/sha256-js": "^4.0.0", "@aws-sdk/credential-provider-node": "^3.360.0", "@aws-sdk/protocol-http": "^3.357.0", "@aws-sdk/signature-v4": "^3.357.0", "axios": "^1.4.0" } }

index.js

const axios = require('axios'); const SHA256 = require('@aws-crypto/sha256-js').Sha256 const defaultProvider = require('@aws-sdk/credential-provider-node').defaultProvider const HttpRequest = require('@aws-sdk/protocol-http').HttpRequest const SignatureV4 = require('@aws-sdk/signature-v4').SignatureV4 // define a signer object with AWS service name, credentials, and region const signer = new SignatureV4({ credentials: defaultProvider(), service: 'managedblockchain', region: 'us-east-1', sha256: SHA256, }); const rpcRequest = async () => { // create a remote procedure call (RPC) request object definig the method, input params let rpc = { jsonrpc: "1.0", id: "1001", method: 'getblock', params: ["00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09"] } //bitcoin endpoint let bitcoinURL = 'https://mainnet.bitcoin.managedblockchain.us-east-1.amazonaws.com/'; // parse the URL into its component parts (e.g. host, path) const url = new URL(bitcoinURL); // create an HTTP Request object const req = new HttpRequest({ hostname: url.hostname.toString(), path: url.pathname.toString(), body: JSON.stringify(rpc), method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept-Encoding': 'gzip', host: url.hostname, } }); // use AWS SignatureV4 utility to sign the request, extract headers and body const signedRequest = await signer.sign(req, { signingDate: new Date() }); try { //make the request using axios const response = await axios({...signedRequest, url: bitcoinURL, data: req.body}) console.log(response.data) } catch (error) { console.error('Something went wrong: ', error) throw error } } rpcRequest();

El código de ejemplo anterior utiliza Axios para realizar RPC solicitudes al punto final de Bitcoin y las firma con los encabezados correspondientes de la versión 4 de firma (SiGv4) utilizando el código oficial AWS SDKherramientas de la versión 3. Para ejecutar el código, abre una terminal en el mismo directorio que tus archivos y ejecuta lo siguiente:

npm i node index.js

El resultado que se genere será similar al siguiente:

{"hash":"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09"," confirmations":784126,"height":1000, "version":1,"versionHex":"00000001", "merkleroot":"fe28050b93faea61fa88c4c630f0e1f0a1c24d0082dd0e10d369e13212128f33", "time":1232346882, "mediantime":1232344831,"nonce":2595206198,"bits":"1d00ffff","difficulty":1, "chainwork":"000000000000000000000000000000000000000000000000000003e903e903e9", "nTx":1, "previousblockhash":"0000000008e647742775a230787d66fdf92c46a48c896bfbc85cdc8acc67e87d", "nextblockhash":"00000000a2887344f8db859e372e7e4bc26b23b9de340f725afbf2edb265b4c6", "strippedsize":216,"size":216,"weight":864, "tx":["fe28050b93faea61fa88c4c630f0e1f0a1c24d0082dd0e10d369e13212128f33"]}, "error":null,"id":"1001"}
nota

La solicitud de ejemplo del script anterior realiza la getblock llamada con el mismo hash de bloque de parámetros de entrada que en el Haga que AMB Access Bitcoin JSON RPC solicite en awscurl utilizando el AWS CLI ejemplo. Para realizar otras llamadas, modifique el rpc objeto del script con un Bitcoin JSON - diferenteRPC. Puedes cambiar la opción de propiedad anfitriona a Bitcoin testnet para realizar llamadas en ese punto final.

AWS PrivateLink es una tecnología escalable y de alta disponibilidad que puede utilizar para conectarse VPC a sus servicios de forma privada como si estuvieran en el suyoVPC. No tiene que usar una puerta de enlace de Internet, un NAT dispositivo, una dirección IP pública, AWS Conexión Direct Connect, o AWS VPNConexión de sitio a sitio para comunicarse con el servicio desde sus subredes privadas. Para obtener más información acerca de AWS PrivateLink o para configurar AWS PrivateLink, consulte ¿Qué es AWS PrivateLink?

Puedes enviar RPC solicitudes de AMB acceso a Bitcoin a través de JSON AWS PrivateLink mediante un VPC punto final. Las solicitudes a este punto final privado no se transmiten a través de Internet abierto, por lo que puedes enviar solicitudes directamente a los puntos finales de Bitcoin mediante la misma autenticación SigV4. Para obtener más información, consulta Acceso AWS servicios a través de AWS PrivateLink.

Para el nombre del servicio, busca Amazon Managed Blockchain en la AWS columna de servicio. Para obtener más información, consulte AWS servicios que se integran con AWS PrivateLink. El nombre del servicio del punto final tendrá el siguiente formato:com.amazonaws.AWS-REGION.managedblockchain.bitcoin.NETWORK-TYPE.

Por ejemplo: com.amazonaws.us-east-1.managedblockchain.bitcoin.testnet.