아마존 매니지드 블록체인 시작하기 (AMB) 비트코인에 접근하기 - AMB비트코인에 접근하기

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

아마존 매니지드 블록체인 시작하기 (AMB) 비트코인에 접근하기

이 섹션의 step-by-step 자습서를 통해 Amazon Managed Blockchain (AMB) Access Bitcoin을 사용하여 작업을 수행하는 방법을 알아보십시오. 이러한 예제를 사용하려면 몇 가지 사전 요구 사항을 완료해야 합니다. AMBAccess Bitcoin을 처음 사용하는 경우 이 가이드의 설정 섹션을 검토하여 해당 사전 요구 사항을 완료했는지 확인하세요. 자세한 내용은 아마존 매니지드 블록체인 (AMB) 액세스 비트코인 설정 단원을 참조하십시오.

비트코인 액세스를 위한 IAM 정책 만들기 - JSON RPCs

비트코인 메인넷 및 테스트넷의 퍼블릭 엔드포인트에 액세스하여 JSON - RPC 호출을 하려면 Amazon Managed Blockchain () Access Bitcoin에 대한 적절한 IAM 권한을 가진 사용자 자격 증명 (AWS_ACCESSAWS_SECRETACCESS_ KEY _ID 및 _ _KEY) 이 있어야 합니다. AMB 다음과 같은 장치가 설치된 터미널에서 AWS CLI 설치된 후 다음 명령을 실행하여 두 비트코인 엔드포인트에 모두 액세스할 수 있는 IAM 정책을 생성합니다.

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
참고

이전 예시에서는 비트코인 메인넷과 테스트넷 모두에 액세스할 수 있습니다. 특정 엔드포인트에 액세스하려면 다음 Action 명령을 사용하십시오.

  • "managedblockchain:InvokeRpcBitcoinMainnet"

  • "managedblockchain:InvokeRpcBitcoinTestnet"

정책을 생성한 후 해당 정책을 IAM 사용자 역할에 연결하여 적용하십시오. 에서 AWS Management Console IAM서비스로 이동하여 IAM 사용자에게 할당된 역할에 정책을 AmazonManagedBlockchainBitcoinAccess 연결합니다. 자세한 내용은 역할 생성 및 IAM 사용자에게 할당을 참조하십시오.

AMB액세스 RPC 편집기에서 다음을 사용하여 비트코인 원격 프로시저 호출 (RPC) 요청을 생성합니다. AWS Management Console

에서 원격 프로시저 호출 (RPCs) 을 편집하고 제출할 수 있습니다. AWS Management Console AMBAccess 사용. 이를 RPCs 통해 비트코인 네트워크에서 데이터를 읽고, 쓰고, 거래를 제출할 수 있습니다.

다음 예제는 를 사용하여 blockhash00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09에 대한 정보를 얻는 방법을 보여줍니다. getBlock RPC 강조 표시된 변수를 자체 입력으로 바꾸거나 나열된 다른 방법 중 하나를 선택하고 필요한 관련 입력을 입력합니다. RPC

  1. 에서 관리형 블록체인 콘솔을 https://console.aws.amazon.com/managedblockchain/여십시오.

  2. RPC에디터를 선택하세요.

  3. 요청 섹션에서 블록체인 BITCOIN_MAINNET 네트워크로 선택합니다.

  4. getblockRPC방법으로 선택하세요.

  5. 블록 번호로 입력하고 00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09 상세 0 정보로 선택합니다.

  6. 그런 다음 제출RPC을 선택합니다.

  7. 이 페이지의 응답 섹션에서 결과를 확인할 수 있습니다. 그런 다음 전체 원시 트랜잭션을 복사하여 추가 분석을 위해 또는 애플리케이션의 비즈니스 로직에 사용할 수 있습니다.

자세한 내용은 AMBAccess Bitcoin에서 RPCs 지원하는 항목을 참조하십시오.

다음을 사용하여 awscurl에서 AMB 액세스 비트코인 JSON - RPC 요청을 생성하십시오. AWS CLI

액세스 비트코인 엔드포인트로 비트코인을 JSON RPC 호출하려면 서명 버전 4 (SigV4) 를 사용하여 IAM 사용자 자격 증명으로 요청에 서명하십시오. AMB awscurl 명령줄 도구를 사용하면 다음과 같은 요청에 서명할 수 있습니다. AWS SigV4를 사용하는 서비스. 자세한 내용은 READMEawscurl .md를 참조하십시오.

운영 체제에 적합한 방법을 사용하여 awscurl을 설치합니다. macOS에서는 HomeBrew 다음과 같은 응용 프로그램을 사용하는 것이 좋습니다.

brew install awscurl

이미 설치 및 구성한 경우 AWS CLIIAM사용자 자격 증명과 기본 AWS 지역은 사용자 환경에 설정되어 있으며 awscurl에 액세스할 수 있습니다. awscurl을 사용하여 를 호출하여 비트코인 메인넷과 테스트넷 모두에 요청을 제출하십시오. getblock RPC 이 호출은 정보를 검색하려는 블록 해시에 해당하는 문자열 파라미터를 수락합니다.

다음 명령은 params 배열의 블록 해시를 사용하여 헤더를 검색할 특정 블록을 선택하여 비트코인 메인넷에서 블록 헤더 데이터를 검색합니다. 이 예시에서는 엔드포인트를 사용합니다. us-east-1 이를 선호하는 비트코인으로 JSON 바꿀 수 있습니다. RPC AWS Amazon Managed Blockchain이 지원하는 지역 (AMB) 액세스 비트코인. 또한 testnet 명령에서 를 mainnet 로 대체하여 메인넷 대신 테스트넷 네트워크를 대상으로 요청할 수 있습니다.

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

결과에는 블록 헤더의 세부 정보와 요청된 블록에 포함된 트랜잭션 해시 목록이 포함됩니다. 다음 예를 참조하세요.

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

Node.js 내에서 비트코인 JSON 생성 - RPC 요청

를 사용하여 비트코인 메인넷 및 테스트넷 HTTPS 엔드포인트에 액세스하고 Node.js 네이티브 https 모듈을 사용하여 JSON - RPC API 호출을 수행하여 서명된 요청을 제출하거나, 다음과 같은 타사 라이브러리를 사용할 수 있습니다. AXIOS 다음 예시는 Access Bitcoin 엔드포인트에 비트코인을 JSON RPC 요청하는 방법을 보여줍니다. AMB

이 예제 Node.js 스크립트를 실행하려면 다음 사전 요구 사항을 적용하십시오.

  1. 시스템에 노드 버전 관리자 (nvm) 와 Node.js 가 설치되어 있어야 합니다. 여기에서 해당 OS의 설치 지침을 찾을 수 있습니다.

  2. node --version명령을 사용하여 Node 버전 14 이상을 사용하고 있는지 확인합니다. 필요한 경우 nvm install 14 명령과 명령을 차례로 사용하여 버전 14를 설치할 수 있습니다. nvm use 14

  3. 환경 변수에는 AWS_ACCESS_KEY_ID 계정과 관련된 자격 증명이 AWS_SECRET_ACCESS_KEY 포함되어야 합니다. 환경 변수에는 AMB Access 비트코인 엔드포인트가 AMB_HTTP_ENDPOINT 포함되어야 합니다.

    다음 명령을 사용하여 클라이언트에서 이러한 변수를 문자열로 내보냅니다. 다음 문자열에서 강조 표시된 값을 IAM 사용자 계정의 적절한 값으로 바꾸십시오.

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

모든 사전 요구 사항을 완료한 후 편집기를 사용하여 다음 package.json 파일과 index.js 스크립트를 로컬 환경에 복사하십시오.

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

이전 샘플 코드는 Axios를 사용하여 비트코인 엔드포인트에 RPC 요청을 보내고, 공식 코드를 사용하여 적절한 서명 버전 4 (SigV4) 헤더를 사용하여 해당 요청에 서명합니다. AWS SDKv3 도구. 코드를 실행하려면 파일과 같은 디렉터리에서 터미널을 열고 다음을 실행합니다.

npm i node index.js

생성되는 결과는 다음과 같습니다.

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

이전 스크립트의 샘플 요청은 예제와 동일한 입력 매개 변수 블록 해시를 사용하여 getblock 호출합니다다음을 사용하여 awscurl에서 AMB 액세스 비트코인 JSON - RPC 요청을 생성하십시오. AWS CLI. 다른 호출을 하려면 스크립트의 rpc 객체를 다른 비트코인 JSON RPC -으로 수정하십시오. 호스트 속성 옵션을 비트코인으로 변경하여 해당 엔드포인트에서 호출을 testnet 할 수 있습니다.

AWS PrivateLink 가용성과 확장성이 뛰어난 기술로, 마치 내 서비스에 있는 것처럼 비공개로 서비스에 VPC 연결할 수 있습니다VPC. 인터넷 게이트웨이, NAT 장치, 공용 IP 주소를 사용할 필요가 없습니다. AWS 다이렉트 커넥트 연결 또는 AWS 사설 서브넷에서 서비스와 통신하기 위한 사이트 간 VPN 연결 에 대한 자세한 내용은 AWS PrivateLink 또는 설정하기 AWS PrivateLink, 무엇이냐를 참조하십시오. AWS PrivateLink?

비트코인을 보낼 수 있습니다 JSON - 비트코인 AMB 액세스 RPC 요청을 통해 AWS PrivateLink VPC엔드포인트를 사용해서 말이죠. 이 프라이빗 엔드포인트에 대한 요청은 개방형 인터넷을 통해 전달되지 않으므로 동일한 SigV4 인증을 사용하여 비트코인 엔드포인트에 직접 요청을 보낼 수 있습니다. 자세한 내용은 Access를 참조하십시오. AWS 다음을 통한 서비스 AWS PrivateLink.

서비스 이름을 보려면 다음 페이지에서 Amazon Managed Blockchain을 찾아보십시오. AWS 서비스 칼럼. 자세한 내용은 단원을 참조하세요.AWS 다음과 통합되는 서비스 AWS PrivateLink. 엔드포인트의 서비스 이름은 다음 com.amazonaws.AWS-REGION.managedblockchain.bitcoin.NETWORK-TYPE 형식입니다.

예: com.amazonaws.us-east-1.managedblockchain.bitcoin.testnet.