

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Memulai dengan Amazon Managed Blockchain (AMB) Akses Bitcoin
<a name="getting-started"></a>

Gunakan step-by-step tutorial di bagian ini untuk mempelajari cara melakukan tugas dengan menggunakan Amazon Managed Blockchain (AMB) Akses Bitcoin. Contoh-contoh ini mengharuskan Anda untuk menyelesaikan beberapa prasyarat. Jika Anda baru mengenal AMB Access Bitcoin, tinjau bagian *Pengaturan* dari panduan ini untuk memastikan Anda telah menyelesaikan prasyarat tersebut. Untuk informasi selengkapnya, lihat [Menyiapkan Amazon Managed Blockchain (AMB) Akses Bitcoin](bitcoin-setting-up.md).

**Topics**
+ [Buat kebijakan IAM untuk mengakses Bitcoin JSON- RPCs](#getting-started-next-steps)
+ [Buat permintaan panggilan prosedur jarak jauh (RPC) Bitcoin pada editor AMB Access RPC menggunakan Konsol Manajemen AWS](#gs-console-bitcoin)
+ [Buat permintaan AMB Access Bitcoin JSON-RPC di awscurl dengan menggunakan AWS CLI](#awscurl-bitcoin-rpc-requests)
+ [Buat permintaan Bitcoin JSON-RPC di Node.js](#nodejs-bitcoin-rpc-requests)
+ [Gunakan AMB Access Bitcoin AWS PrivateLink](#bitcoin-rpc-requests-privatelink)

## Buat kebijakan IAM untuk mengakses Bitcoin JSON- RPCs
<a name="getting-started-next-steps"></a>

Untuk mengakses titik akhir publik untuk Bitcoin Mainnet dan Testnet untuk melakukan panggilan JSON-RPC, Anda harus memiliki kredensi pengguna (AWS\$1ACCESS\$1KEY\$1ID dan AWS\$1SECRET \$1ACCESS\$1KEY) yang memiliki izin IAM yang sesuai untuk Amazon Managed Blockchain (AMB) Akses Bitcoin. Di terminal dengan AWS CLI instalasi, jalankan perintah berikut untuk membuat Kebijakan IAM untuk mengakses kedua titik akhir 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
```

**catatan**  
Contoh sebelumnya memberi Anda akses ke Bitcoin Mainnet dan Testnet. Untuk mendapatkan akses ke titik akhir tertentu, gunakan `Action` perintah berikut:   
`"managedblockchain:InvokeRpcBitcoinMainnet"`
`"managedblockchain:InvokeRpcBitcoinTestnet"`

Setelah Anda membuat kebijakan, lampirkan kebijakan tersebut ke Peran pengguna IAM agar kebijakan tersebut diterapkan. Di bagian Konsol Manajemen AWS, navigasikan ke layanan IAM, dan lampirkan kebijakan `AmazonManagedBlockchainBitcoinAccess` ke Peran yang ditetapkan ke pengguna IAM Anda. Untuk informasi selengkapnya, lihat [Membuat Peran dan menetapkan ke pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html).

## Buat permintaan panggilan prosedur jarak jauh (RPC) Bitcoin pada editor AMB Access RPC menggunakan Konsol Manajemen AWS
<a name="gs-console-bitcoin"></a>

Anda dapat mengedit dan mengirimkan panggilan prosedur jarak jauh (RPCs) pada Konsol Manajemen AWS menggunakan AMB Access. Dengan ini RPCs, Anda dapat membaca data, menulis, dan mengirimkan transaksi di jaringan Bitcoin.

**Example**  
Contoh berikut menunjukkan bagaimana untuk mendapatkan informasi tentang *00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09 dengan menggunakan RPC*`blockhash`. `getBlock` Ganti variabel yang disorot dengan input Anda sendiri atau pilih salah satu **metode RPC** lain yang terdaftar dan masukkan input yang relevan yang diperlukan.  

1. Buka konsol Managed Blockchain di [https://console.aws.amazon.com/managedblockchain/](https://console.aws.amazon.com/managedblockchain/).

1. Pilih **editor RPC**.

1. Di bagian **Permintaan**, pilih `BITCOIN_MAINNET` sebagai **Jaringan Blockchain**. 

1. Pilih `getblock` sebagai **metode RPC**. 

1. Masukkan `00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09` sebagai **nomor Blokir** dan pilih `0` sebagai **verbositas**. 

1. Kemudian, pilih **Kirim RPC**.

1. Anda akan mendapatkan hasil di bagian **Respons** di halaman ini. Anda kemudian dapat menyalin transaksi mentah lengkap untuk analisis lebih lanjut atau untuk digunakan dalam logika bisnis untuk aplikasi Anda.

Untuk informasi selengkapnya, lihat yang [RPCs didukung oleh AMB Access Bitcoin](https://docs.aws.amazon.com/managed-blockchain/latest/ambbtc-dg/bitcoin-api.html)

## Buat permintaan AMB Access Bitcoin JSON-RPC di awscurl dengan menggunakan AWS CLI
<a name="awscurl-bitcoin-rpc-requests"></a>

**Example**  
Menandatangani permintaan dengan kredensyal pengguna IAM Anda dengan menggunakan [Signature Version 4 (SigV4)](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) untuk melakukan panggilan Bitcoin JSON-RPC ke titik akhir AMB Access Bitcoin. Alat baris perintah [awscurl](https://github.com/okigan/awscurl) dapat membantu Anda menandatangani permintaan ke AWS layanan menggunakan SiGv4. Untuk informasi lebih lanjut, lihat [awscurl](https://github.com/okigan/awscurl#readme) README.md.  
Instal awscurl dengan menggunakan metode yang sesuai dengan sistem operasi Anda. Di macOS, HomeBrew adalah aplikasi yang direkomendasikan:  

```
brew install awscurl
```
Jika Anda telah menginstal dan mengonfigurasi AWS CLI, kredensyal pengguna IAM dan Wilayah AWS default disetel di lingkungan Anda dan memiliki akses ke awscurl. Menggunakan awscurl, kirimkan permintaan ke Bitcoin *Mainnet dan *Testnet** dengan memanggil RPC. `getblock` Panggilan ini menerima parameter string yang sesuai dengan hash blok yang ingin Anda ambil informasinya.   
Perintah berikut mengambil data header blok dari Bitcoin Mainnet dengan menggunakan hash blok dalam `params` array untuk memilih blok tertentu untuk mengambil header. Contoh ini menggunakan `us-east-1` endpoint. Anda dapat menggantinya dengan Bitcoin JSON-RPC dan AWS Wilayah pilihan Anda yang didukung oleh Amazon Managed Blockchain (AMB) Access Bitcoin. Selanjutnya, Anda dapat membuat permintaan terhadap jaringan Testnet, bukan Mainnet, dengan mengganti `mainnet` dengan `testnet ` perintah.  

```
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
```
Hasilnya mencakup rincian dari header blok dan daftar hash transaksi yang termasuk dalam blok yang diminta. Lihat contoh berikut ini:   

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

## Buat permintaan Bitcoin JSON-RPC di Node.js
<a name="nodejs-bitcoin-rpc-requests"></a>

[Anda dapat mengirimkan permintaan yang ditandatangani dengan menggunakan HTTPS untuk mengakses titik akhir Bitcoin *Mainnet* dan *Testnet* dan untuk melakukan panggilan API JSON-RPC dengan menggunakan [modul https asli di Node.js](https://nodejs.org/api/https.html), atau Anda dapat menggunakan pustaka pihak ketiga seperti AXIOS.](https://axios-http.com) Contoh berikut menunjukkan kepada Anda cara membuat permintaan Bitcoin JSON-RPC ke titik akhir AMB Access Bitcoin.

**Example**  
Untuk menjalankan contoh skrip Node.js ini, terapkan prasyarat berikut:  

1. Anda harus memiliki node version manager (nvm) dan Node.js diinstal pada mesin Anda. Anda dapat menemukan petunjuk instalasi untuk OS Anda [di sini](https://github.com/nvm-sh/nvm).

1. Gunakan `node --version` perintah dan konfirmasikan bahwa Anda menggunakan *Node versi 14* atau lebih tinggi. Jika diperlukan, Anda dapat menggunakan `nvm install 14` perintah, diikuti oleh `nvm use 14` perintah, untuk menginstal *versi 14*.

1. Variabel lingkungan `AWS_ACCESS_KEY_ID` dan `AWS_SECRET_ACCESS_KEY` harus berisi kredensyal yang terkait dengan akun Anda. Variabel lingkungan `AMB_HTTP_ENDPOINT` harus berisi titik akhir AMB Access Bitcoin Anda. 

   Ekspor variabel ini sebagai string pada klien Anda dengan menggunakan perintah berikut. Ganti nilai yang disorot dalam string berikut dengan nilai yang sesuai dari akun pengguna IAM Anda.

   ```
   export AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"
   export AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
   ```
Setelah Anda menyelesaikan semua prasyarat, salin `package.json` file dan `index.js` skrip berikut ke lingkungan lokal Anda dengan menggunakan editor Anda:  
*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();
```
Kode sampel sebelumnya menggunakan Axios untuk membuat permintaan RPC ke titik akhir Bitcoin, dan menandatangani permintaan tersebut dengan header Signature Version 4 (SigV4) yang sesuai dengan menggunakan alat SDK v3 resmi. AWS Untuk menjalankan kode, buka terminal di direktori yang sama dengan file Anda dan jalankan yang berikut:   

```
npm i
node index.js
```
Hasil yang dihasilkan akan menyerupai yang berikut:  

```
{"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"}
```
Permintaan sampel dalam skrip sebelumnya membuat `getblock` panggilan dengan hash blok parameter input yang sama seperti [Buat permintaan AMB Access Bitcoin JSON-RPC di awscurl dengan menggunakan AWS CLI](#awscurl-bitcoin-rpc-requests) contoh. Untuk melakukan panggilan lain, modifikasi `rpc` objek dalam skrip dengan Bitcoin JSON-RPC yang berbeda. Anda dapat mengubah opsi properti host ke Bitcoin `testnet` untuk melakukan panggilan pada titik akhir tersebut. 

## Gunakan AMB Access Bitcoin AWS PrivateLink
<a name="bitcoin-rpc-requests-privatelink"></a>

AWS PrivateLink adalah teknologi yang sangat tersedia dan dapat diskalakan yang dapat Anda gunakan untuk menghubungkan VPC Anda ke layanan pribadi seolah-olah mereka ada di VPC Anda. Anda tidak perlu menggunakan gateway internet, perangkat NAT, alamat IP publik, koneksi AWS Direct Connect, atau koneksi AWS Site-to-Site VPN untuk berkomunikasi dengan layanan dari subnet pribadi Anda. Untuk informasi lebih lanjut tentang AWS PrivateLink atau untuk mengatur AWS PrivateLink, lihat [Apa itu AWS PrivateLink?](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)

Anda dapat mengirim permintaan Bitcoin JSON-RPC ke AMB Access Bitcoin melalui dengan AWS PrivateLink menggunakan titik akhir VPC. Permintaan ke titik akhir pribadi ini tidak diteruskan melalui internet terbuka, sehingga Anda dapat mengirim permintaan langsung ke titik akhir Bitcoin dengan menggunakan otentikasi *SiGv4* yang sama. Untuk informasi selengkapnya, lihat [Akses AWS layanan melalui AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html). 

Untuk *nama Layanan*, cari *Amazon Managed Blockchain* di kolom *AWS layanan*. Untuk informasi selengkapnya, lihat [AWS layanan yang terintegrasi dengan AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/aws-services-privatelink-support.html). Nama layanan untuk titik akhir akan dalam format berikut:`com.amazonaws.AWS-REGION.managedblockchain.bitcoin.NETWORK-TYPE`. 

 Misalnya: `com.amazonaws.us-east-1.managedblockchain.bitcoin.testnet`. 