@dioxide-js/silas
Version:
RPC utility for Silas
77 lines (61 loc) • 2.22 kB
JavaScript
const { Web3, NET } = require('../dist/cjs/index.js')
const { user } = require('./conf')
const web3 = new Web3(NET.DEV, {
apiKey: 'sk_CDdiLOUG31vArLW35incaSkclHVBiB7yNQQ3YbNJh1M',
})
const dapp = 'trump01'
const name = 'ProofMe'
const contract1 = `
contract ${name} {
@shard scattered_map<hash, string> proofs;
@address function new(string key, string content) public export const {
address sender = __transaction.get_sender();
hash proof_key = hash(string(sender).append(key));
address proof_addr = address(proof_key);
relay@proof_addr _new(sender, proof_key, content);
}
@address function _new(address owner, hash key, string content) {
proofs[key] = content;
// __debug.print("New ProofOfExistence success, key:", key, ", content:", content);
}
@address function bool check(hash key) public {
return proofs.has(key);
}
@address function string get(hash proof_key) public {
string content = "";
if (proofs.has(proof_key)) {
content = proofs[proof_key];
}
// __debug.print("ProofOfExistence get by key: ", proof_key, ", content: ", content);
return content;
}
}`
async function start() {
// mint
const mint = await web3.contract.mint(user.privatekey, user.address)
console.log('mint =>', mint)
await web3.txn.sureFinalized(mint)
// bid dapp
const bidHash = await web3.contract.createDApp(user.privatekey, user.address, dapp)
console.log('new dapp =>', bidHash)
await web3.txn.sureFinalized(bidHash)
// deploy contract
const deployHash = await web3.contract.deploy(user.privatekey, {
delegatee: dapp + ':dapp',
code: [contract1],
cargs: [''],
})
console.log('deploy =>', deployHash)
await web3.txn.sureFinalized(deployHash)
// retrive constract abi
const abi = await web3.contract.abi(dapp + '.' + name)
console.log('abi =>', abi)
const invokeHash = await web3.contract.run(user.privatekey, {
sender: user.address,
func: `${dapp}.${name}.new`,
args: { key: 'a', content: 'b' },
})
console.log('run contract function =>', invokeHash)
return true
}
start().then(console.log).catch(console.error)