Guida introduttiva ad Amazon Managed Blockchain (AMB) Access Bitcoin - AMBAccedi a Bitcoin

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Guida introduttiva ad Amazon Managed Blockchain (AMB) Access Bitcoin

Usa step-by-step i tutorial in questa sezione per imparare a eseguire attività utilizzando Amazon Managed Blockchain (AMB) Access Bitcoin. Questi esempi richiedono il completamento di alcuni prerequisiti. Se non conosci AMB Access Bitcoin, consulta la sezione Configurazione di questa guida per assicurarti di aver completato i prerequisiti. Per ulteriori informazioni, consulta Configurazione di Amazon Managed Blockchain (AMB) Access Bitcoin.

Crea una IAM politica per accedere a Bitcoin JSON - RPCs

Per poter accedere agli endpoint pubblici su Bitcoin Mainnet e Testnet per effettuare JSON RPC chiamate, devi disporre di credenziali utente (AWS_ACCESS_ KEY _ID e AWS_SECRET _ _) con le autorizzazioni appropriate per IAM Amazon Managed Blockchain (KEY) Access Bitcoin. ACCESS AMB In un terminale con AWS CLI installato, esegui il seguente comando per creare una IAM politica per accedere a entrambi gli endpoint 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

L'esempio precedente ti dà accesso sia a Bitcoin Mainnet che a Testnet. Per accedere a un endpoint specifico, usa il seguente comando: Action

  • "managedblockchain:InvokeRpcBitcoinMainnet"

  • "managedblockchain:InvokeRpcBitcoinTestnet"

Dopo aver creato la policy, associala al ruolo IAM dell'utente per renderla effettiva. Nel AWS Management Console, accedi al IAM servizio e allega la policy AmazonManagedBlockchainBitcoinAccess al ruolo assegnato al tuo IAM utente. Per ulteriori informazioni, consulta Creazione di un ruolo e assegnazione a un IAM utente.

Effettua richieste di chiamata di procedura remota Bitcoin (RPC) sull'RPCeditor di AMB Access utilizzando il AWS Management Console

Puoi modificare e inviare chiamate di procedura remota (RPCs) su AWS Management Console utilizzando AMB Access. Con questiRPCs, puoi leggere dati, scrivere e inviare transazioni sulla rete Bitcoin.

L'esempio seguente mostra come ottenere informazioni su blockhash00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09 utilizzando. getBlock RPC Sostituisci le variabili evidenziate con i tuoi input o scegli uno degli altri metodi elencati e inserisci gli input pertinenti richiesti. RPC

  1. Apri la console Managed Blockchain all'indirizzo. https://console.aws.amazon.com/managedblockchain/

  2. Scegli RPCl'editor.

  3. Nella sezione Richiesta, scegli BITCOIN_MAINNET come rete Blockchain.

  4. Scegli getblock come RPCmetodo.

  5. Inserisci 00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09 come numero di blocco e scegli 0 come verbosità.

  6. Quindi, scegli Submit (Invia)RPC.

  7. Otterrai i risultati nella sezione Risposta di questa pagina. È quindi possibile copiare le transazioni non elaborate complete per ulteriori analisi o utilizzarle nella logica aziendale delle applicazioni.

Per ulteriori informazioni, consulta la pagina RPCssupportata da AMB Access Bitcoin

Make AMB Access BitcoinJSON: RPC richieste in awscurl utilizzando il AWS CLI

Firma le richieste con le tue credenziali IAM utente utilizzando Signature Version 4 (SigV4) per effettuare RPC chiamate Bitcoin agli endpoint JSON Access Bitcoin. AMB Lo strumento da riga di comando awscurl può aiutarti a firmare le richieste a AWS servizi che utilizzano SigV4. Per ulteriori informazioni, consulta READMEawscurl .md.

Installa awscurl utilizzando il metodo appropriato al tuo sistema operativo. Su macOS, HomeBrew è l'applicazione consigliata:

brew install awscurl

Se hai già installato e configurato il AWS CLI, le credenziali IAM utente e la AWS regione predefinita sono impostate nel tuo ambiente e hanno accesso a awscurl. Utilizzando awscurl, invia una richiesta sia a Bitcoin Mainnet che a Testnet invocando il. getblock RPC Questa chiamata accetta un parametro di stringa corrispondente all'hash del blocco per il quale si desidera recuperare le informazioni.

Il comando seguente recupera i dati dell'intestazione del blocco dalla rete principale di Bitcoin utilizzando l'hash del blocco nell'paramsarray per selezionare il blocco specifico per il quale recuperare le intestazioni. Questo esempio utilizza l'endpoint. us-east-1 Puoi sostituirlo con il tuo Bitcoin JSON preferito e RPC AWS Regione supportata da Amazon Managed Blockchain (AMB) Access Bitcoin. Inoltre, puoi effettuare una richiesta sulla rete Testnet, anziché sulla rete Mainnet, sostituendola mainnet con testnet nel 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

I risultati includono i dettagli delle intestazioni dei blocchi e un elenco di hash delle transazioni inclusi nel blocco richiesto. Fai riferimento al file di esempio seguente:

{"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"}

Effettua RPC richieste in Bitcoin JSON in Node.js

Puoi inviare richieste firmate utilizzando HTTPS per accedere agli endpoint Bitcoin Mainnet e Testnet ed effettuare JSON RPC API chiamate utilizzando il modulo https nativo in Node.js, oppure puoi utilizzare una libreria di terze parti come. AXIOS L'esempio seguente mostra come effettuare una RPC richiesta Bitcoin agli JSON endpoint AMB Access Bitcoin.

Per eseguire questo script Node.js di esempio, applica i seguenti prerequisiti:

  1. È necessario che nel computer siano installati node version manager (nvm) e Node.js. Puoi trovare le istruzioni di installazione per il tuo sistema operativo qui.

  2. Usa il node --version comando e conferma che stai usando la versione 14 o successiva di Node. Se necessario, è possibile utilizzare il nvm install 14 comando, seguito dal nvm use 14 comando, per installare la versione 14.

  3. Le variabili AWS_ACCESS_KEY_ID di ambiente AWS_SECRET_ACCESS_KEY devono contenere le credenziali associate all'account. Le variabili di ambiente AMB_HTTP_ENDPOINT devono contenere gli endpoint AMB Access Bitcoin.

    Esporta queste variabili come stringhe sul tuo client utilizzando i seguenti comandi. Sostituisci i valori evidenziati nelle stringhe seguenti con i valori appropriati del tuo account IAM utente.

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

Dopo aver completato tutti i prerequisiti, copia il package.json file e index.js lo script seguenti nell'ambiente locale utilizzando l'editor:

pacchetto.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();

Il codice di esempio precedente utilizza Axios per effettuare RPC richieste all'endpoint Bitcoin e firma tali richieste con le intestazioni Signature Version 4 (SigV4) appropriate utilizzando il codice ufficiale AWS SDKstrumenti v3. Per eseguire il codice, apri un terminale nella stessa directory dei file ed esegui quanto segue:

npm i node index.js

Il risultato generato sarà simile al seguente:

{"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 richiesta di esempio nello script precedente effettua la getblock chiamata con lo stesso hash di blocco del parametro di input dell'Make AMB Access BitcoinJSON: RPC richieste in awscurl utilizzando il AWS CLIesempio. Per effettuare altre chiamate, modifica l'rpcoggetto nello script con un altro Bitcoin JSON -RPC. Puoi modificare l'opzione della proprietà host in Bitcoin testnet per effettuare chiamate su quell'endpoint.

AWS PrivateLink è una tecnologia scalabile e altamente disponibile che puoi utilizzare per connetterti VPC ai servizi in modo privato come se fossero presenti nel tuo. VPC Non è necessario utilizzare un gateway Internet, un NAT dispositivo, un indirizzo IP pubblico, AWS Connessione Direct Connect, oppure AWS VPNConnessione da sito a sito per comunicare con il servizio dalle sottoreti private. Per ulteriori informazioni sull' AWS PrivateLink o per configurare AWS PrivateLink, vedi Cos'è AWS PrivateLink?

Puoi inviare Bitcoin JSON - RPC richieste a AMB Access Bitcoin tramite AWS PrivateLink utilizzando un VPC endpoint. Le richieste a questo endpoint privato non vengono trasmesse su Internet aperto, quindi puoi inviare richieste direttamente agli endpoint Bitcoin utilizzando la stessa autenticazione SigV4. Per ulteriori informazioni, consulta Access AWS servizi tramite AWS PrivateLink.

Per il nome del servizio, cerca Amazon Managed Blockchain nel AWS colonna di servizio. Per ulteriori informazioni, consulta AWS servizi che si integrano con AWS PrivateLink. Il nome del servizio per l'endpoint sarà nel seguente formato:com.amazonaws.AWS-REGION.managedblockchain.bitcoin.NETWORK-TYPE.

Ad esempio: com.amazonaws.us-east-1.managedblockchain.bitcoin.testnet.