Erste Schritte mit Amazon Managed Blockchain (AMB) Access Polygon - AMB-Zugriffspolygon

Amazon Managed Blockchain (AMB) Access Polygon befindet sich in der Vorschauversion und kann sich ändern.

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 Polygon

Verwenden Sie die Informationen und Verfahren in diesem Abschnitt, um mit Amazon Managed Blockchain (AMB) Access Polygon zu beginnen.

Erstellen Sie eine IAM-Richtlinie für den Zugriff auf das Polygon-Blockchain-Netzwerk

Um auf den öffentlichen Endpunkt für das Polygon-Mainnet zuzugreifen, um JSON-RPC-Aufrufe zu tätigen, benötigen Sie Benutzeranmeldedaten (AWS_ACCESS_KEY_IDundAWS_SECRET_ACCESS_KEY), die über die entsprechenden IAM-Berechtigungen für Amazon Managed Blockchain (AMB) Access Polygon 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 Polygon-Endpunkte zu erstellen:

cat <<EOT > ~/amb-polygon-access-policy.json { "Version": "2012-10-17", "Statement": [ { "Sid" : "AMBPolygonAccessPolicy", "Effect": "Allow", "Action": [ "managedblockchain:InvokeRpcPolygon*" ], "Resource": "*" } ] } EOT aws iam create-policy --policy-name AmazonManagedBlockchainPolygonAccess --policy-document file://$HOME/amb-polygon-access-policy.json
Anmerkung

Im vorherigen Beispiel erhalten Sie Zugriff auf alle verfügbaren Polygon-Netzwerke. Verwenden Sie den folgenden Action Befehl, um Zugriff auf einen bestimmten Endpunkt zu erhalten:

  • "managedblockchain:InvokeRpcPolygonMainnet"

Nachdem Sie die Richtlinie erstellt haben, fügen Sie diese Richtlinie der Rolle Ihres IAM-Benutzers hinzu, damit sie wirksam wird. Navigieren Sie in der AWS Management Console zum IAM-Dienst und fügen Sie die Richtlinie der Rolle AmazonManagedBlockchainPolygonAccess hinzu, die Ihrem IAM-Benutzer zugewiesen ist.

Stellen Sie Polygon Remote Procedure Call (RPC) -Anfragen im AMB Access RPC-Editor mithilfe des AWS Management Console

Sie können Remote Procedure Calls (RPCs) auf dem AMB AWS Management Console Access Polygon bearbeiten, konfigurieren und einreichen. Mit diesen RPCs können Sie Daten lesen und Transaktionen im Polygon-Netzwerk schreiben, einschließlich des Abrufs von Daten und des Sendens von Transaktionen an das Polygon-Netzwerk.

Das folgende Beispiel zeigt, wie Sie mithilfe von RPC Informationen über den neuesten Block abrufen können. eth_getBlockByNumber Ändern Sie die hervorgehobenen Variablen in Ihre eigenen Eingaben oder wählen Sie eine der aufgelisteten RPC-Methoden und geben Sie die entsprechenden erforderlichen Eingaben ein.

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

  2. Wählen Sie den RPC-Editor.

  3. Wählen Sie POLYGON_MAINNET im Bereich Anfrage das Blockchain-Netzwerk aus.

  4. Wählen Sie eth_getBlockByNumber als RPC-Methode.

  5. Geben Sie latest die Blocknummer ein und wählen Sie False die Option Vollständige Transaktion.

  6. Wählen Sie dann Submit RPC aus.

  7. Die Ergebnisse des latest Blocks erhalten Sie im Abschnitt Antwort. 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 unter den von AMB Access Polygon unterstützten RPCs

Stellen Sie AMB Access Polygon JSON-RPC-Anfragen in, indem Sie den awscurlAWS CLI

Signieren Sie Anfragen mit Ihren IAM-Benutzeranmeldedaten, indem Sie Signature Version 4 (Sigv4) verwenden, um Polygon-JSON-RPC-Anfragen an die AMB Access Polygon-Endpunkte zu stellen. Das awscurlBefehlszeilentool kann Ihnen helfen, Anfragen an Dienste zu signieren, die Sigv4 verwenden. AWS Weitere Informationen finden Sie in der Datei awscurl README.md.

Verwenden Sie für awscurl die Installation die für Ihr Betriebssystem geeignete Methode. Unter macOS HomeBrew ist die empfohlene Anwendung:

brew install awscurl

Wenn Sie das bereits installiert und konfiguriert haben AWS CLI, AWS-Region sind Ihre IAM-Benutzeranmeldedaten und der Standard in Ihrer Umgebung festgelegt und Sie haben Zugriff awscurl auf. Verwenden Sieawscurl, um eine Anfrage an das Polygon-Mainnet zu senden, indem Sie den RPC aufrufen. eth_getBlockByNumber Dieser Aufruf akzeptiert einen Zeichenkettenparameter, der der Blocknummer entspricht, für die Sie Informationen abrufen möchten.

Der folgende Befehl ruft die Blockdaten aus dem Polygon-Mainnet ab, indem er anhand der Blocknummer im params Array den spezifischen Block auswählt, für den die Header abgerufen werden sollen.

awscurl -X POST -d '{ "jsonrpc": "2.0", "id": "eth_getBlockByNumber-curltest", "method":"eth_getBlockByNumber", "params":["latest", false] }' --service managedblockchain https://mainnet.polygon.managedblockchain.us-east-1.amazonaws.com -k
Tipp

Sie können dieselbe Anfrage auch mithilfe curl der Token-basierten Zugriffsfunktion von AMB Access unter Verwendung von Tokens stellen. Accessor Weitere Informationen finden Sie unter Accessor-Token für tokenbasierten Zugriff erstellen und verwalten, um AMB Access Polygon-Anfragen zu stellen.

curl -X POST -d '{"jsonrpc":"2.0", "id": "eth_getBlockByNumber-curltest", "method":"eth_getBlockByNumber", "params":["latest", false] }' 'https://mainnet.polygon.managedblockchain.us-east-1.amazonaws.com?billingtoken=your-billing-token'

Die Antwort eines der Befehle gibt Informationen über den letzten Block zurück. Zur Veranschaulichung sehen Sie sich das folgende Beispiel an:

{"error":null,"id":"eth_getBlockByNumber-curltest","jsonrpc":"1.0", "result":{"baseFeePerGas":"0x873bf591e","difficulty":"0x18", "extraData":"0xd78301000683626f7288676f312e32312e32856c696e757800000000000000009a\ 423a58511085d90eaf15201a612af21ccbf1e9f8350455adaba0d27eff0ecc4133e8cd255888304cc\ 67176a33b451277c2c3c1a6a6482d2ec25ee1573e8ba000", "gasLimit":"0x1c9c380","gasUsed":"0x14ca04d", "hash":"0x1ee390533a3abc3c8e1306cc1690a1d28d913d27b437c74c761e1a49********;", "nonce":"0x0000000000000000","number":"0x2f0ec4d", "parentHash":"0x27d47bc2c47a6d329eb8aa62c1353f60e138fb0c596e3e8e9425de163afd6dec", "receiptsRoot":"0x394da96025e51cc69bbe3644bc4e1302942c2a6ca6bf0cf241a5724c74c063fd", "sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", "size":"0xbd6b", "stateRoot":"0x7ca9363cfe9baf4d1c0dca3159461b2cca8604394e69b30af05d7d5c1beea6c3", "timestamp":"0x653ff542", "totalDifficulty":"0x33eb01dd","transactions":[...], "transactionsRoot":"0xda1602c66ffd746dd470e90a47488114a9d00f600ab598466ecc0f3340b24e0c", "uncles":[]}}

Stellen Sie Polygon-JSON-RPC-Anfragen in Node.js

Sie können Polygon JSON-RPCs aufrufen, indem Sie signierte Anfragen über HTTPS senden, um mithilfe des nativen https-Moduls in Node.js auf das Polygon-Mainnet-Netzwerk zuzugreifen, oder Sie können eine Drittanbieterbibliothek wie AXIOS verwenden. Die folgenden Beispiele für Node.js zeigen Ihnen, wie Sie Polygon-JSON-RPC-Anfragen an den AMB Access Polygon-Endpunkt sowohl mit Signature Version 4 (Sigv4) als auch mit tokenbasiertem Zugriff stellen. Im ersten Beispiel wird eine Transaktion von einer Adresse an eine andere gesendet, und im folgenden Beispiel werden Transaktionsdetails und Saldeninformationen aus der Blockchain angefordert.

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.

  2. Verwenden Sie den node --version Befehl und bestätigen Sie, dass Sie Node Version 18 oder höher verwenden. Bei Bedarf können Sie den nvm install v18.12.0 Befehl, gefolgt vom Befehl, verwenden, um Version 18, die LTS-Version von Node, zu installieren. nvm use v18.12.0

  3. Die Umgebungsvariablen AWS_ACCESS_KEY_ID und AWS_SECRET_ACCESS_KEY müssen die Anmeldeinformationen enthalten, die mit Ihrem Konto verknüpft sind.

    Exportieren Sie diese Variablen mithilfe der folgenden Befehle als Zeichenfolgen auf Ihrem Client. Ersetzen Sie die rot markierten Werte in den folgenden Zeichenketten 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 folgenden Dateien mit Ihrem bevorzugten Code-Editor in ein Verzeichnis in Ihrer lokalen Umgebung:

package.json

{ "name": "polygon-rpc", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "ethers": "^6.8.1", "@aws-crypto/sha256-js": "^5.2.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.6.2" } }

dispatch-evm-rpc.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 (rpcEndpoint, rpc) => { // parse the URL into its component parts (e.g. host, path) let url = new URL(rpcEndpoint); // 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: url, data: req.body, }); return response.data; } catch (error) { console.error("Something went wrong: ", error); } }; module.exports = { rpcRequest: rpcRequest };

sendTx.js

Warnung

Der folgende Code verwendet einen fest codierten privaten Schlüssel, um ein Wallet zu generieren, das Signer nur zu Ethers.js Demonstrationszwecken verwendet. Verwenden Sie diesen Code nicht in Produktionsumgebungen, da er über echtes Geld verfügt und ein Sicherheitsrisiko darstellt.

Wenden Sie sich bei Bedarf an Ihr Account-Team, um Sie über bewährte Methoden für Wallet und Signer zu informieren.

const ethers = require("ethers"); //set AMB Access Polygon endpoint using token based access (TBA) let token = "your-billing-token" let url = `https://mainnet.polygon.managedblockchain.us-east-1.amazonaws.com?billingtoken=${token}`; //prevent batch RPCs let options = { batchMaxCount: 1, }; //create JSON RPC provider with AMB Access endpoint and options let provider = new ethers.JsonRpcProvider(url, null, options); let sendTx = async (to) => { //create an instance of the Wallet class with a private key //DO NOT USE A WALLET YOU USE ON MAINNET, NEVER USE A RAW PRIVATE KEY IN PROD let pk = "wallet-private-key"; let signer = new ethers.Wallet(pk, provider); //use this wallet to send a transaction of POL from one address to another const tx = await signer.sendTransaction({ to: to, value: ethers.parseUnits("0.0001", "ether"), }); console.log(tx); }; sendTx("recipent-address");

readTx.js

let rpcRequest = require("./dispatch-evm-rpc").rpcRequest; let ethers = require("ethers"); let getTxDetails = async (txHash) => { //set url to a Signature Version 4 endpoint for AMB Access let url = "https://mainnet.polygon.managedblockchain.us-east-1.amazonaws.com"; //set RPC request body to get transaction details let getTransactionByHash = { id: "1", jsonrpc: "2.0", method: "eth_getTransactionByHash", params: [txHash], }; //make RPC request for transaction details let txDetails = await rpcRequest(url, getTransactionByHash); //set RPC request body to get recipient user balance let getBalance = { id: "2", jsonrpc: "2.0", method: "eth_getBalance", params: [txDetails.result.to, "latest"], }; //make RPC request for recipient user balance let recipientBalance = await rpcRequest(url, getBalance); console.log("TX DETAILS: ", txDetails.result, "BALANCE: ", ethers.formatEther(recipientBalance.result)); }; getTxDetails("your-transaction-id");

Sobald diese Dateien in Ihrem Verzeichnis gespeichert sind, installieren Sie die Abhängigkeiten, die für die Ausführung des Codes erforderlich sind, mit dem folgenden Befehl:

npm install

Senden Sie eine Transaktion in Node.js

Im vorherigen Beispiel wird das native Polygon-Mainnet-Token (POL) von einer Adresse an eine andere gesendet, indem eine Transaktion signiert und mithilfe von AMB Access Polygon an das Polygon-Mainnet gesendet wird. Verwenden Sie dazu das sendTx.js Skript, das eine beliebte Bibliothek für die Interaktion mit Ethereum Ethers.js und Ethereum-kompatiblen Blockchains wie Polygon verwendet. Sie müssen drei Variablen im Code ersetzen, sofern sie rot markiert sind, darunter das billingToken für Ihren Accessor-Token für den tokenbasierten Zugriff, den privaten Schlüssel, mit dem Sie die Transaktion signieren, und die Adresse des Empfängers, der die POL erhält.

Tipp

Wir empfehlen Ihnen, zu diesem Zweck einen neuen privaten Schlüssel (Wallet) zu erstellen, anstatt ein vorhandenes Wallet wiederzuverwenden, um das Risiko eines Geldverlusts auszuschließen. Sie können die Wallet-Klassenmethode createRandom () der Ethers-Bibliothek verwenden, um ein Wallet zu generieren, mit dem Sie testen können. Wenn Sie POL vom Polygon-Mainnet anfordern müssen, können Sie außerdem den öffentlichen POL-Faucet verwenden, um eine kleine Menge für Tests anzufordern.

Sobald Sie den privaten Schlüssel einer finanzierten Wallet und die Adresse des Empfängers zum Code hinzugefügt haben, führen Sie den folgenden Code aus, um eine Transaktion für .0001 POL zu signieren, die von Ihrer Adresse an eine andere gesendet und an Polygon Mainnet gesendet wird, wobei der eth_sendRawTransaction JSON-RPC mithilfe des AMB Access Polygon aufgerufen wird. billingToken

node sendTx.js

Die Antwort, die wir zurückerhalten haben, sieht wie folgt aus:

TransactionResponse { provider: JsonRpcProvider {}, blockNumber: null, blockHash: null, index: undefined, hash: '0x8d7538b4841261c5120c0a4dd66359e8ee189e7d1d34ac646a1d9923********', type: 2, to: '0xd2bb4f4f1BdC4CB54f715C249Fc5a991********', from: '0xcf2C679AC6cb7de09Bf6BB6042ecCF05********', nonce: 2, gasLimit: 21000n, gasPrice: undefined, maxPriorityFeePerGas: 16569518669n, maxFeePerGas: 16569518685n, data: '0x', value: 100000000000000n, chainId: 80001n, signature: Signature { r: "0x1b90ad9e9e4e005904562d50e904f9db10430a18b45931c059960ede337238ee", s: "0x7df3c930a964fd07fed4a59f60b4ee896ffc7df4ea41b0facfe82b470db448b7", yParity: 0, networkV: null }, accessList: [] }

Die Antwort stellt den Transaktionsbeleg dar. Speichern Sie den Wert der Immobiliehash. Dies ist die Kennung für die Transaktion, die Sie gerade an die Blockchain übermittelt haben. Sie verwenden diese Eigenschaft im Beispiel für eine Lesetransaktion, um zusätzliche Details zu dieser Transaktion aus dem Polygon-Mainnet zu erhalten.

Beachten Sie, dass die blockNumber und null in der Antwort blockHash stehen. Dies liegt daran, dass die Transaktion noch nicht in einem Block im Polygon-Netzwerk aufgezeichnet wurde. Beachten Sie, dass diese Werte später definiert werden und Sie sie möglicherweise sehen, wenn Sie die Transaktionsdetails im folgenden Abschnitt anfordern.

Lesen Sie eine Transaktion in Node.js

In diesem Abschnitt fordern Sie die Transaktionsdetails für die zuvor übermittelte Transaktion an und rufen den POL-Saldo für die Empfängeradresse mithilfe von Leseanfragen an das Polygon-Mainnet mithilfe von AMB Access Polygon ab. Ersetzen Sie in der readTx.js Datei die Variable your-transaction-idmit der Bezeichnung, die Sie aus der Antwort gespeichert haben, die hash Sie beim Ausführen des Codes im vorherigen Abschnitt gespeichert haben.

Dieser Code verwendet ein Hilfsprogrammdispatch-evm-rpc.js, das HTTPS-Anfragen an AMB Access Polygon mit den erforderlichen Signature Version 4 (Sigv4) -Modulen aus dem AWS SDK signiert und Anfragen über den weit verbreiteten HTTP-Client AXIOS sendet.

Die zurückgesendete Antwort sieht wie folgt aus:

TX DETAILS: { blockHash: '0x59433e0096c783acab0659175460bb3c919545ac14e737d7465b3ddc********', blockNumber: '0x28b4059', from: '0xcf2c679ac6cb7de09bf6bb6042eccf05b7fa1394', gas: '0x5208', gasPrice: '0x3db9eca5d', maxPriorityFeePerGas: '0x3db9eca4d', maxFeePerGas: '0x3db9eca5d', hash: '0x8d7538b4841261c5120c0a4dd66359e8ee189e7d1d34ac646a1d9923********', input: '0x', nonce: '0x2', to: '0xd2bb4f4f1bdc4cb54f715c249fc5a991********', transactionIndex: '0x0', value: '0x5af3107a4000', type: '0x2', accessList: [], chainId: '0x13881', v: '0x0', r: '0x1b90ad9e9e4e005904562d50e904f9db10430a18b45931c059960ede337238ee', s: '0x7df3c930a964fd07fed4a59f60b4ee896ffc7df4ea41b0facfe82b470db448b7' } BALANCE: 0.0003

Die Antwort stellt die Transaktionsdetails dar. Beachten Sie, dass die blockHash und jetzt wahrscheinlich definiert blockNumber sind. Dies weist darauf hin, dass die Transaktion in einem Block aufgezeichnet wurde. Wenn diese Werte immer noch vorhanden sindnull, warten Sie einige Minuten und führen Sie dann den Code erneut aus, um zu überprüfen, ob Ihre Transaktion in einem Block enthalten ist. Schließlich wird die hexadezimale Darstellung des Saldos der Empfängeradresse (0x110d9316ec000) mithilfe der formatEther() Ethers-Methode in eine Dezimalzahl umgewandelt. Dabei wird der Hexadezimalwert in eine Dezimalzahl umgewandelt und die Dezimalstellen um 18 (10^18) verschoben, um den wahren Saldo in POL zu erhalten.

Tipp

Die vorherigen Codebeispiele veranschaulichen zwar, wie Sie Node.js, Ethers und Axios verwenden können, um einige der unterstützten JSON-RPCs auf AMB Access Polygon zu verwenden. Sie können die Beispiele jedoch ändern und anderen Code schreiben, um Ihre Anwendungen auf Polygon mithilfe dieses Dienstes zu erstellen. Eine vollständige Liste der unterstützten JSON-RPCs auf AMB Access Polygon finden Sie unter. Verwaltete Blockchain-API und die von AMB Access Polygon unterstützten JSON-RPCs