Smart Contract mit der NEAR JavaScript API verwenden

NEAR Protocol Deutsch
4 min readMar 1, 2024

Wir haben uns bereits angesehen, was die NEAR JavaScript API kann, wozu man sie verwenden kann und wie man mit ihr mit der NEAR Blockchain interagiert. Hier der Link zum Artikel:

Außerdem haben wir mit JavaScript unseren ersten Smart Contract auf der NEAR Blockchain veröffentlicht. Hier der Link zum Artikel:

In diesem Artikel schauen wir uns an, wie wir unseren veröffentlichten Smart Contract mit der NEAR JavaScript API verwenden können.

Verbindung zu einem Konto herstellen

Im ersten Schritt müssen wir mit der JavaScript API eine Verbindung zu einem Account (Konto) herstellen. Diese Verbindung ermöglicht uns, mit einen Smart Contract zu interagieren.

(async () => {

//import modules
const nearAPI = require("near-api-js");

// set up key store
const { keyStores, KeyPair} = nearAPI;
const myKeyStore = new keyStores.InMemoryKeyStore();

const PRIVATE_KEY = "XXX";

// creates a public / private key pair using the provided private key
const keyPair = KeyPair.fromString(PRIVATE_KEY);

// adds the keyPair you created to keyStore

await myKeyStore.setKey("testnet", "near-deutsch.testnet", keyPair);

//connect to Near
const { connect } = nearAPI;

const connectionConfig = {
networkId: "testnet",
keyStore: myKeyStore,
nodeUrl: "https://rpc.testnet.near.org",
walletUrl: "https://testnet.mynearwallet.com/",
helperUrl: "https://helper.testnet.near.org",
explorerUrl: "https://testnet.nearblocks.io",
};

//connect with the Near testnet
const nearConnection = await connect(connectionConfig);

//test connection and retrieve account details
const account = await nearConnection.account("near-deutsch.testnet");

})()



Falls es Probleme beim Verbindungsaufbau gibt, referenziere ich auf unseren verlinkten Artikel oben oder auf die offizielle NEAR JavaScript API Dokumentation.

Verbindung zum Smart Contract herstellen

Im nächsten Schritt stellen wir eine Verbindung zum Smart Contract her.

const { keyStores, KeyPair, Contract } = nearAPI; //import Contract
 
const contract = new Contract(account, "near-deutsch.testnet", {
viewMethods: ["get_num"], //
changeMethods: ["increment", "decrement", "reset"]
});

Es wird immer ein Objekt der Klasse Contract instanziiert.

  • Der erste Parameter ist das Konto (mit dem wir mit der Blockchain verbunden sind).
  • Der zweite Parameter ist das Konto, worauf der Smart Contract deployt wurde. Wir haben unseren “counter”-Contract auf das “near-deutsch.testnet”-Konto deployt.
  • Der dritte Parameter sind die Methoden, die man verwenden möchte.

Anmerkungen:

Das Konto, auf dem der Smart Contract deployt wurde, muss nicht mit dem Konto ident sein, mit dem wir mit der Blockchain verbunden sind. Unser Smart Contract kann mit jedem beliebigen Konto auf der Blockchain aufgerufen werden. Das Netzwerk muss natürlich schon ident sein, in unserem Fall sind wir im Testnet.

Bei den Methoden des Smart Contracts unterscheidet man zwei Arten:

  1. View-Methoden: vgl. Getter-Methoden. Es werden Werte, die im Smart Contract gespeichert sind, abgefragt. Diese Aufrufe sind dabei kostenlos, es werden keine Netzwerkgebühren (Gas) verrechnet.
  2. Change-Methoden: vgl. Setter-Methoden. Es werden Werte, die im Smart Contract gespeichert sind, verändert. Diese Aufrufe sind nicht kostenlos, es werden Netzwerkgebühren (Gas) verrechnet.

Methoden des Smart Contracts aufrufen

Nun rufen wir die Methoden auf, die uns vom “counter”-Contract zur Verfügung gestellt werden und verändern die gespeicherte Zahl des Contracts.

await contract.reset(); // => counter = 0

console.log(await contract.get_num()); // => output: 0

await contract.increment(); // => counter = 1
await contract.increment(); // => counter = 2
await contract.decrement(); // => counter = 1

console.log(await contract.get_num()); // => output: 1

Haben wir alles richtig gemacht, bekommen wir die richtigen Werte :)

Somit haben wir mit der JavaScript API mit unseren zuvor veröffentlichten Smart Contract erfolgreich interagiert.

Fazit

Die NEAR JavaScript API ermöglicht uns mit der sehr mächtigen Programmiersprache JavaScript Smart Contracts auf der NEAR Blockchain zu verwenden. Somit können Personen mit JavaScript-Kenntnissen Smart Contracts auf der NEAR Blockchain entwickeln (wie wir in unserem letzten Artikel gesehen haben) und auch über eine API verwenden, ohne dabei spezielle Fähigkeiten erlernen zu müssen.

Hier nochmals der vollständige Code

(async () => {

//import modules
const nearAPI = require("near-api-js");

const { keyStores, KeyPair, Contract } = nearAPI;
const myKeyStore = new keyStores.InMemoryKeyStore();

const PRIVATE_KEY = "xxx"

// creates a public / private key pair using the provided private key
const keyPair = KeyPair.fromString(PRIVATE_KEY);

// adds the keyPair you created to keyStore

await myKeyStore.setKey("testnet", "near-deutsch.testnet", keyPair);

//connect to Near
const { connect } = nearAPI;

const connectionConfig = {
networkId: "testnet",
keyStore: myKeyStore, // first create a key store
nodeUrl: "https://rpc.testnet.near.org",
//walletUrl: "https://wallet.testnet.near.org",
walletUrl: "https://testnet.mynearwallet.com/",
helperUrl: "https://helper.testnet.near.org",
explorerUrl: "https://testnet.nearblocks.io",
};

//connect with the Near mainnet
const nearConnection = await connect(connectionConfig);

//test connection and retrieve account details
const account = await nearConnection.account("near-deutsch.testnet");

const contract = new Contract(account, "near-deutsch.testnet", {
viewMethods: ["get_num"], //
changeMethods: ["increment", "decrement", "reset"]
});

await contract.reset(); // => counter = 0

console.log(await contract.get_num()); // => output: 0

await contract.increment(); // => counter = 1
await contract.increment(); // => counter = 2
await contract.decrement(); // => counter = 1

console.log(await contract.get_num()); // => output: 1

})()



Hier noch ein paar nützliche Links der offiziellen NEAR Dokumentation:

Werde Teil der NEAR-Community:

Internationale Community
Telegram | Twitter | Webseite

Deutsche Community
Telegram | Twitter | Medium

--

--

NEAR Protocol Deutsch

Hier werden News und Updates des NEAR Ökosystems in deutscher Sprache veröffentlicht