Metacces uses Geth which supports common smart contract and dapp development, deployment, and operational use cases, using tools such as Hardhat, web3.js and web3js-quorum. The client supports common JSON-RPC API methods, for example eth, net, web3, debug, and miner.
Prerequisites
Node.js version 15 or later.
The web3 library must be installed in your project.
web3
The web3.js library is the most widely used for developing applications.
Install web3 in your project
npm install web3
Initialize the web3 client
Initialize your client where:
https://oli.accesscan.io is the JSON-RPC HTTP endpoint of your Metacces node.
Example connection
const Web3 = require("web3");
const web3 = new Web3("http://oli.accesscan.io");
WS example
Example connection
const Web3 = require("web3");
const web3 = new Web3("http://ws.accesscan.io");
Deploying a contract
To deploy a private contract, you need the contract binary. You can use Solidity to get the contract binary.
Copy
Copy myContract.deploy({
data: '0x12345...',
arguments: [123, 'My String']
})
.send({
from: '0x1234567890123456789012345678901234567891',
gas: 1500000,
gasPrice: '30000000000000'
}, function(error, transactionHash){ ... })
.on('error', function(error){ ... })
.on('transactionHash', function(transactionHash){ ... })
.on('receipt', function(receipt){
console.log(receipt.contractAddress) // contains the new contract address
})
.on('confirmation', function(confirmationNumber, receipt){ ... })
.then(function(newContractInstance){
console.log(newContractInstance.options.address) // instance with the new contract address
});
Alternatively, you can also deploy a contract using eth.sendSignedTransaction
Copy
Copy const rawTxOptions = {
nonce: "0x00",
from: account.address,
to: null, //public tx
value: "0x00",
data: "0x" + contractBin + contractConstructorInit,
gasPrice: "0x0", //ETH per unit of gas
gasLimit: "0x24A22", //max number of gas units the tx is allowed to use
};
console.log("Creating transaction...");
const tx = new Tx(rawTxOptions);
console.log("Signing transaction...");
tx.sign(Buffer.from(account.privateKey.substring(2), "hex"));
console.log("Sending transaction...");
var serializedTx = tx.serialize();
const pTx = await web3.eth.sendSignedTransaction(
"0x" + serializedTx.toString("hex").toString("hex"),
);
console.log("tx transactionHash: " + pTx.transactionHash);
console.log("tx contractAddress: " + pTx.contractAddress);
return pTx;
web3 methods
For more information about the web3 methods, see the web3 reference documentation.
Last updated 3 months ago