Introdução ao Amazon Managed Blockchain (AMB) Acesse Bitcoin - AMBAcesse Bitcoin

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Introdução ao Amazon Managed Blockchain (AMB) Acesse Bitcoin

Use os step-by-step tutoriais desta seção para aprender a realizar tarefas usando o Amazon Managed Blockchain (AMB) Access Bitcoin. Esses exemplos exigem que você preencha alguns pré-requisitos. Se você é novo no AMB Access Bitcoin, revise a seção Configuração deste guia para verificar se você cumpriu esses pré-requisitos. Para obter mais informações, consulte Configurando o Amazon Managed Blockchain (AMB) Acesse Bitcoin.

Crie uma IAM política para acessar o Bitcoin JSON - RPCs

Para acessar os endpoints públicos da Bitcoin Mainnet e da Testnet para fazer JSON RPC chamadas, você deve ter credenciais de usuário (AWS_ACCESS_ KEY _ID e AWS_SECRET _ _) que tenham as permissões apropriadas para que o Amazon IAM Managed Blockchain (KEY) acesse o Bitcoin. ACCESS AMB Em um terminal com o AWS CLI instalado, execute o seguinte comando para criar uma IAM política para acessar os dois endpoints 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

O exemplo anterior fornece acesso ao Bitcoin Mainnet e ao Testnet. Para obter acesso a um endpoint específico, use o seguinte Action comando:

  • "managedblockchain:InvokeRpcBitcoinMainnet"

  • "managedblockchain:InvokeRpcBitcoinTestnet"

Depois de criar a política, anexe essa política à função do IAM usuário para que ela entre em vigor. No painel, AWS Management Console, navegue até o IAM serviço e anexe a política AmazonManagedBlockchainBitcoinAccess à função atribuída ao seu IAM usuário. Para obter mais informações, consulte Criação de uma função e atribuição a um IAM usuário.

Faça solicitações de chamada de procedimento remoto (RPC) do Bitcoin no RPC editor do AMB Access usando o AWS Management Console

Você pode editar e enviar chamadas de procedimento remoto (RPCs) no AWS Management Console usando o AMB Access. Com elesRPCs, você pode ler dados, gravar e enviar transações na rede Bitcoin.

O exemplo a seguir mostra como obter informações sobre o 00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09 usandoblockhash. getBlock RPC Substitua as variáveis destacadas por suas próprias entradas ou escolha um dos outros RPCmétodos listados e insira as entradas relevantes necessárias.

  1. Abra o console do Managed Blockchain em https://console.aws.amazon.com/managedblockchain/.

  2. Escolha o RPCeditor.

  3. Na seção Solicitação, escolha BITCOIN_MAINNET como Rede Blockchain.

  4. Escolha getblock como RPCmétodo.

  5. Insira 00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09 como o número do bloco e escolha 0 como a verbosidade.

  6. Escolha Submit (Enviar)RPC.

  7. Você obterá resultados na seção Resposta desta página. Em seguida, você pode copiar todas as transações brutas para análise posterior ou para usar na lógica de negócios de seus aplicativos.

Para obter mais informações, consulte o RPCssuporte do AMB Access Bitcoin

Faça RPC solicitações de AMB acesso ao Bitcoin JSON em awscurl usando o AWS CLI

Assine solicitações com suas credenciais de IAM usuário usando o Signature Version 4 (SigV4) para fazer RPC chamadas Bitcoin para os JSON endpoints do AMB Access Bitcoin. A ferramenta de linha de comando awscurl pode ajudar você a assinar solicitações para AWS serviços usando SigV4. Para obter mais informações, consulte READMEawscurl .md.

Instale o awscurl usando o método apropriado ao seu sistema operacional. No macOS, HomeBrew é o aplicativo recomendado:

brew install awscurl

Se você já instalou e configurou o AWS CLI, suas credenciais de IAM usuário e a AWS região padrão são definidas em seu ambiente e têm acesso ao awscurl. Usando awscurl, envie uma solicitação para a Bitcoin Mainnet e a Testnet invocando o. getblock RPC Essa chamada aceita um parâmetro de string correspondente ao hash do bloco para o qual você deseja recuperar informações.

O comando a seguir recupera os dados do cabeçalho do bloco da rede principal do Bitcoin usando o hash do bloco na params matriz para selecionar o bloco específico para o qual recuperar os cabeçalhos. Este exemplo usa o us-east-1 endpoint. Você pode substituí-lo pelo seu Bitcoin preferido JSON - RPC e AWS Região que é suportada pelo Amazon Managed Blockchain (AMB) Acesse Bitcoin. Além disso, você pode fazer uma solicitação na rede Testnet, em vez da Mainnet, mainnet substituindo por testnet no 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

Os resultados incluem detalhes dos cabeçalhos dos blocos e uma lista de hashes de transação incluídos no bloco solicitado. Veja o exemplo a seguir:

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

Faça Bitcoin JSON - RPC solicitações em Node.js

Você pode enviar solicitações assinadas usando HTTPS para acessar os endpoints Bitcoin Mainnet e Testnet e fazer JSON RPC API chamadas usando o módulo https nativo em Node.js, ou você pode usar uma biblioteca de terceiros, como. AXIOS O exemplo a seguir mostra como fazer uma RPC solicitação Bitcoin JSON - para os endpoints do AMB Access Bitcoin.

Para executar esse exemplo de script Node.js, aplique os seguintes pré-requisitos:

  1. Você deve ter o node version manager (nvm) e o Node.js instalados em sua máquina. Você pode encontrar instruções de instalação para seu sistema operacional aqui.

  2. Use o node --version comando e confirme se você está usando a versão 14 ou superior do Node. Se necessário, você pode usar o nvm install 14 comando, seguido pelo nvm use 14 comando, para instalar a versão 14.

  3. As variáveis AWS_ACCESS_KEY_ID de ambiente AWS_SECRET_ACCESS_KEY devem conter as credenciais associadas à sua conta. As variáveis de ambiente AMB_HTTP_ENDPOINT devem conter seus endpoints AMB Access Bitcoin.

    Exporte essas variáveis como cadeias de caracteres em seu cliente usando os comandos a seguir. Substitua os valores destacados nas sequências de caracteres a seguir pelos valores apropriados da sua conta de IAM usuário.

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

Depois de concluir todos os pré-requisitos, copie o package.json arquivo e o index.js script a seguir em seu ambiente local usando seu editor:

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

O código de exemplo anterior usa o Axios para fazer RPC solicitações ao endpoint Bitcoin e assina essas solicitações com os cabeçalhos apropriados do Signature Version 4 (SigV4) usando o código oficial AWS SDKferramentas v3. Para executar o código, abra um terminal no mesmo diretório dos seus arquivos e execute o seguinte:

npm i node index.js

O resultado gerado será semelhante ao seguinte:

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

A solicitação de amostra no script anterior faz a getblock chamada com o mesmo hash de bloco de parâmetros de entrada do Faça RPC solicitações de AMB acesso ao Bitcoin JSON em awscurl usando o AWS CLI exemplo. Para fazer outras chamadas, modifique o rpc objeto no script com um Bitcoin diferente JSON -RPC. Você pode alterar a opção de propriedade do host para Bitcoin testnet para fazer chamadas nesse endpoint.

AWS PrivateLink é uma tecnologia altamente disponível e escalável que você pode usar para conectar seus VPC serviços de forma privada, como se estivessem no seu. VPC Você não precisa usar um gateway de internet, NAT dispositivo, endereço IP público, AWS Conexão Direct Connect ou AWS VPNConexão site a site para se comunicar com o serviço a partir de suas sub-redes privadas. Para obter mais informações sobre AWS PrivateLink ou para configurar AWS PrivateLink, veja O que é AWS PrivateLink?

Você pode enviar Bitcoin JSON - RPC solicitações para AMB acessar o Bitcoin AWS PrivateLink usando um VPC endpoint. As solicitações para esse endpoint privado não são passadas pela Internet aberta, então você pode enviar solicitações diretamente para os endpoints Bitcoin usando a mesma autenticação SigV4. Para obter mais informações, consulte Access AWS serviços por meio de AWS PrivateLink.

Para o nome do serviço, procure Amazon Managed Blockchain na AWS coluna de serviço. Para ter mais informações, consulte AWS serviços que se integram com AWS PrivateLink. O nome do serviço para o endpoint estará no seguinte formato:com.amazonaws.AWS-REGION.managedblockchain.bitcoin.NETWORK-TYPE.

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