Mit Smart Contract interagieren -Teil 2
Es ist auch möglich, Zahlungen an einen Smart Contract zu schicken, um eine Funktion ausführen zu lassen.
Dies geschieht, indem dem Funktionsaufruf ein weiterer Parameter hinzugefügt wird.
const options = {value: 10000000000};
const tx = await contractWithSigner.writeText(text, options);
Der Smart Contract muss ebenfalls angepasst werden.
function writeText(string memory _text) payable public{
require(msg.value >= price;
text = _text;
}
Aufgabe
Legen Sie in der Variable price einen entsprechenden Mindestpreis fest (z. B. 10000000000 Wei), der beim Ändern des Variableninhalts bezahlt werden muss.
Passen Sie sowohl den Smart Contract als auch den JavaScript-Code entsprechend an und probieren Sie es aus.
Lösung
Smart Contract
Der Quellcode ist auch in der Datei contract_s4_03.sol zu finden.
pragma solidity ^0.8.26;
contract writeTextContract{
string public text;
uint256 price = 100000000000000; // Wei
function writeText(string memory _text) payable public{
require(msg.value >= price);
text = _text;
}
}
Java Script
async function interact(provider, signer){
var text = document.getElementById("text").value;
console.log(text);
const contract = new ethers.Contract(contractAddress, abi, provider);
const contractWithSigner = contract.connect(signer);
const options = {value: 100000000000000};
const tx = await contractWithSigner.writeText(text, options);
console.log(tx);
}
Der Quellcode ist auch in der Datei index_s4_Dapp2_03.html zu finden.