

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Erste Schritte mit Amazon Managed Blockchain (AMB) Access Bitcoin
<a name="getting-started"></a>

In den step-by-step Tutorials in diesem Abschnitt erfahren Sie, wie Sie Aufgaben mithilfe von Amazon Managed Blockchain (AMB) Access Bitcoin ausführen. Für diese Beispiele müssen Sie einige Voraussetzungen erfüllen. Wenn Sie mit AMB Access Bitcoin noch nicht vertraut sind, überprüfen Sie den Abschnitt *Einrichtung* dieses Handbuchs, um sicherzustellen, dass Sie diese Voraussetzungen erfüllt haben. Weitere Informationen finden Sie unter [Einrichtung von Amazon Managed Blockchain (AMB) Access Bitcoin](bitcoin-setting-up.md).

**Topics**
+ [Erstellen Sie eine IAM-Richtlinie für den Zugriff auf Bitcoin JSON- RPCs](#getting-started-next-steps)
+ [Stellen Sie Bitcoin-RPC-Anfragen (Remote Procedure Call) im AMB Access RPC-Editor mit dem AWS-Managementkonsole](#gs-console-bitcoin)
+ [Stellen Sie AMB Access Bitcoin JSON-RPC-Anfragen in awscurl, indem Sie den AWS CLI](#awscurl-bitcoin-rpc-requests)
+ [Stellen Sie Bitcoin-JSON-RPC-Anfragen in Node.js](#nodejs-bitcoin-rpc-requests)
+ [Verwenden Sie AMB Access Bitcoin über AWS PrivateLink](#bitcoin-rpc-requests-privatelink)

## Erstellen Sie eine IAM-Richtlinie für den Zugriff auf Bitcoin JSON- RPCs
<a name="getting-started-next-steps"></a>

Um auf die öffentlichen Endpunkte für das Bitcoin-Mainnet und das Testnet zuzugreifen, um JSON-RPC-Aufrufe zu tätigen, benötigen Sie Benutzeranmeldedaten (AWS\_ACCESS\_KEY\_ID und AWS\_SECRET \_ACCESS\_KEY), die über die entsprechenden IAM-Berechtigungen für Amazon Managed Blockchain (AMB) Access Bitcoin verfügen. Führen Sie in einem Terminal, auf dem das AWS CLI installiert ist, den folgenden Befehl aus, um eine IAM-Richtlinie für den Zugriff auf beide Bitcoin-Endpunkte zu erstellen: 

```
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
```

**Anmerkung**  
Im vorherigen Beispiel haben Sie Zugriff auf das Bitcoin-Mainnet und das Testnet. Verwenden Sie den folgenden `Action` Befehl, um Zugriff auf einen bestimmten Endpunkt zu erhalten:   
`"managedblockchain:InvokeRpcBitcoinMainnet"`
`"managedblockchain:InvokeRpcBitcoinTestnet"`

Nachdem Sie die Richtlinie erstellt haben, fügen Sie diese Richtlinie der Rolle Ihres IAM-Benutzers hinzu, damit sie wirksam wird. Navigieren Sie im AWS-Managementkonsole zum IAM-Dienst und fügen Sie die Richtlinie der Rolle `AmazonManagedBlockchainBitcoinAccess` hinzu, die Ihrem IAM-Benutzer zugewiesen ist. Weitere Informationen finden Sie unter [Rolle erstellen und sie einem IAM-Benutzer zuweisen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html).

## Stellen Sie Bitcoin-RPC-Anfragen (Remote Procedure Call) im AMB Access RPC-Editor mit dem AWS-Managementkonsole
<a name="gs-console-bitcoin"></a>

Sie können Remote-Prozeduraufrufe (RPCs) AWS-Managementkonsole mithilfe von AMB Access bearbeiten und einreichen. Mit diesen RPCs können Sie Daten lesen, Transaktionen im Bitcoin-Netzwerk schreiben und einreichen.

**Example**  
Das folgende Beispiel zeigt, wie Sie mithilfe von RPC Informationen über *`blockhash`00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09* abrufen können. `getBlock` **Ersetzen Sie die hervorgehobenen Variablen durch Ihre eigenen Eingaben oder wählen Sie eine der anderen aufgeführten RPC-Methoden und geben Sie die entsprechenden erforderlichen Eingaben ein.**  

1. Öffnen Sie die Managed Blockchain-Konsole unter [https://console.aws.amazon.com/managedblockchain/](https://console.aws.amazon.com/managedblockchain/).

1. Wählen Sie den **RPC-Editor**.

1. Wählen Sie `{{BITCOIN_MAINNET}}` im Bereich **Anfrage** das **Blockchain-Netzwerk** aus. 

1. Wählen Sie `{{getblock}}` als **RPC-Methode**. 

1. Geben Sie `{{00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09}}` die **Blocknummer** ein und wählen Sie `{{0}}` die **Ausführlichkeit**. 

1. Wählen Sie dann **Submit** RPC.

1. Die Ergebnisse werden im **Antwortbereich** dieser Seite angezeigt. Anschließend können Sie die vollständigen Rohtransaktionen zur weiteren Analyse oder zur Verwendung in der Geschäftslogik für Ihre Anwendungen kopieren.

Weitere Informationen finden Sie im [von AMB Access RPCs unterstützten](https://docs.aws.amazon.com/managed-blockchain/latest/ambbtc-dg/bitcoin-api.html) Bitcoin

## Stellen Sie AMB Access Bitcoin JSON-RPC-Anfragen in awscurl, indem Sie den AWS CLI
<a name="awscurl-bitcoin-rpc-requests"></a>

**Example**  
Signieren Sie Anfragen mit Ihren IAM-Benutzeranmeldedaten, indem Sie [Signature Version 4 (Sigv4)](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) verwenden, um Bitcoin-JSON-RPC-Aufrufe an die AMB Access Bitcoin-Endpunkte zu tätigen. Das [awscurl-Befehlszeilentool](https://github.com/okigan/awscurl) kann Ihnen helfen, Anfragen an Dienste zu signieren, die Sigv4 verwenden. AWS [Weitere Informationen finden Sie in der Datei awscurl README.md.](https://github.com/okigan/awscurl#readme)  
Installieren Sie awscurl mit der für Ihr Betriebssystem geeigneten Methode. Unter macOS HomeBrew ist die empfohlene Anwendung:  

```
brew install awscurl
```
Wenn Sie die AWS CLI bereits installiert und konfiguriert haben, sind Ihre IAM-Benutzeranmeldedaten und die AWS-Standardregion in Ihrer Umgebung festgelegt und Sie haben Zugriff auf awscurl. *Senden Sie mit awscurl eine Anfrage sowohl an das *Bitcoin-Mainnet als auch an das Testnet*, indem Sie den RPC aufrufen.* `getblock` Dieser Aufruf akzeptiert einen Zeichenkettenparameter, der dem Block-Hash entspricht, für den Sie Informationen abrufen möchten.   
Der folgende Befehl ruft die Block-Header-Daten aus dem Bitcoin-Mainnet ab, indem er den Block-Hash im `params` Array verwendet, um den spezifischen Block auszuwählen, für den die Header abgerufen werden sollen. In diesem Beispiel wird der Endpunkt verwendet. `us-east-1` Sie können dies durch Ihr bevorzugtes Bitcoin-JSON-RPC und Ihre bevorzugte AWS Region ersetzen, die von Amazon Managed Blockchain (AMB) Access Bitcoin unterstützt werden. Darüber hinaus können Sie eine Anfrage an das Testnet-Netzwerk und nicht an das Mainnet richten, indem Sie im Befehl durch ersetzen. `mainnet` `testnet `  

```
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
```
Die Ergebnisse enthalten Details aus den Block-Headern und eine Liste der Transaktions-Hashes, die im angeforderten Block enthalten sind. Sehen Sie sich das folgende Beispiel an:   

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

## Stellen Sie Bitcoin-JSON-RPC-Anfragen in Node.js
<a name="nodejs-bitcoin-rpc-requests"></a>

[Sie können signierte Anfragen über HTTPS einreichen, um auf die Bitcoin *Mainnet* - und *Testnet-Endpunkte* zuzugreifen und JSON-RPC-API-Aufrufe zu tätigen, indem Sie das [native https-Modul in Node.js](https://nodejs.org/api/https.html) verwenden, oder Sie können eine Drittanbieterbibliothek wie AXIOS verwenden.](https://axios-http.com) Das folgende Beispiel zeigt Ihnen, wie Sie eine Bitcoin-JSON-RPC-Anfrage an die AMB Access Bitcoin-Endpunkte stellen.

**Example**  
Um dieses Beispielskript Node.js auszuführen, müssen die folgenden Voraussetzungen erfüllt sein:  

1. Sie müssen Node Version Manager (nvm) und Node.js auf Ihrem Computer installiert haben. Installationsanweisungen für Ihr Betriebssystem finden Sie [hier.](https://github.com/nvm-sh/nvm)

1. Verwenden Sie den `node --version` Befehl und bestätigen Sie, dass Sie *Node Version 14* oder höher verwenden. Bei Bedarf können Sie den `nvm install 14` Befehl gefolgt vom `nvm use 14` Befehl verwenden, um *Version 14* zu installieren.

1. Die Umgebungsvariablen `AWS_ACCESS_KEY_ID` und `AWS_SECRET_ACCESS_KEY` müssen die Anmeldeinformationen enthalten, die mit Ihrem Konto verknüpft sind. Die Umgebungsvariablen `AMB_HTTP_ENDPOINT` müssen Ihre AMB Access Bitcoin-Endpunkte enthalten. 

   Exportieren Sie diese Variablen mithilfe der folgenden Befehle als Zeichenketten auf Ihrem Client. Ersetzen Sie die hervorgehobenen Werte in den folgenden Zeichenfolgen durch entsprechende Werte aus Ihrem IAM-Benutzerkonto.

   ```
   export AWS_ACCESS_KEY_ID="{{AKIAIOSFODNN7EXAMPLE}}"
   export AWS_SECRET_ACCESS_KEY="{{wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY}}"
   ```
Nachdem Sie alle Voraussetzungen erfüllt haben, kopieren Sie die folgende `package.json` Datei und `index.js` das folgende Skript mit Ihrem Editor in Ihre lokale Umgebung:  
*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();
```
Der vorherige Beispielcode verwendet Axios, um RPC-Anfragen an den Bitcoin-Endpunkt zu stellen, und signiert diese Anfragen mithilfe der offiziellen AWS SDK v3-Tools mit den entsprechenden Signature Version 4-Headern (Sigv4). Um den Code auszuführen, öffnen Sie ein Terminal im selben Verzeichnis wie Ihre Dateien und führen Sie Folgendes aus:   

```
npm i
node index.js
```
Das generierte Ergebnis sieht wie folgt aus:  

```
{"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"}
```
Die Beispielanforderung im vorherigen Skript führt den `getblock` Aufruf mit demselben Block-Hash für den Eingabeparameter durch wie im [Stellen Sie AMB Access Bitcoin JSON-RPC-Anfragen in awscurl, indem Sie den AWS CLI](#awscurl-bitcoin-rpc-requests) Beispiel. Um weitere Aufrufe zu tätigen, ändern Sie das `rpc` Objekt im Skript mit einem anderen Bitcoin-JSON-RPC. Sie können die Host-Eigenschaftsoption auf Bitcoin ändern, um Aufrufe an `testnet` diesem Endpunkt zu tätigen. 

## Verwenden Sie AMB Access Bitcoin über AWS PrivateLink
<a name="bitcoin-rpc-requests-privatelink"></a>

AWS PrivateLink ist eine hochverfügbare, skalierbare Technologie, mit der Sie Ihre VPC privat mit Diensten verbinden können, als ob sie sich in Ihrer VPC befinden würden. Sie müssen kein Internet-Gateway, kein NAT-Gerät, keine öffentliche IP-Adresse, keine AWS Direct Connect-Verbindung oder eine AWS Site-to-Site-VPN-Verbindung verwenden, um von Ihren privaten Subnetzen aus mit dem Dienst zu kommunizieren. [Weitere Informationen zu AWS PrivateLink oder zur Einrichtung finden Sie unter Was ist AWS PrivateLink? AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)

Sie können Bitcoin-JSON-RPC-Anfragen über AWS PrivateLink einen VPC-Endpunkt an AMB Access Bitcoin senden. *Anfragen an diesen privaten Endpunkt werden nicht über das offene Internet weitergeleitet, sodass Sie Anfragen mit derselben SigV4-Authentifizierung direkt an die Bitcoin-Endpunkte senden können.* Weitere Informationen finden Sie unter [Zugriff auf AWS Dienste über](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html). AWS PrivateLink

Suchen Sie nach dem *Servicenamen* in der Spalte *AWS Service* nach *Amazon Managed Blockchain*. Weitere Informationen finden Sie unter [AWS Dienste, die sich in integrieren lassen AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/aws-services-privatelink-support.html). Der Dienstname für den Endpunkt wird das folgende Format haben:`com.amazonaws.{{AWS-REGION}}.managedblockchain.bitcoin.{{NETWORK-TYPE}}`. 

 Beispiel: `com.amazonaws.{{us-east-1}}.managedblockchain.bitcoin.{{testnet}}`. 