Update dappservices contract by msig
To update the dappservices contract to the mainnet version on kylin, run
cleos -u https://mainnet.eosn.io get code dappservices --wasm -c dappservices.wasm -a dappservices.abiTake this abi/wasm and put it in a dappservices folder
mkdir dappservices
mv dappservices.abi dappservices
mv dappservices.wasm dappservicesThen use/modify the following scripts to push the code update by msig on Kylin or Mainnet
Kylin
const { Api, JsonRpc, RpcError, Serialize } = require('eosjs');
const { JsSignatureProvider } = require('eosjs/dist/eosjs-jssig'); // development only
const fetch = require('node-fetch'); // node only; not needed in browsers
const { TextEncoder, TextDecoder } = require('util');
const defaultPrivateKey = ""; // natdeveloper
const signatureProvider = new JsSignatureProvider([defaultPrivateKey]);
const rpc = new JsonRpc('https://kylin.eosn.io', { fetch });
const rpc2 = new JsonRpc('http://localhost:8888', { fetch });
const api = new Api({ rpc, signatureProvider, textDecoder: new TextDecoder(), textEncoder: new TextEncoder(), abiProvider: rpc2 });
// const api2 = new Api({ rpc2, signatureProvider, textDecoder: new TextDecoder(), textEncoder: new TextEncoder() });
const fs = require('fs');
const wasmFilePath = "./dappservices/dappservices.wasm";
const abiFilePath = "./dappservices/dappservices.abi";
const wasmHexString = fs.readFileSync(wasmFilePath).toString('hex');
const buffer = new Serialize.SerialBuffer({
textEncoder: api.textEncoder,
textDecoder: api.textDecoder,
});
let abiJSON = JSON.parse(fs.readFileSync(abiFilePath, 'utf8'));
let abiDefinitions = api.abiTypes.get('abi_def');
abiJSON = abiDefinitions.fields.reduce(
(acc, { name: fieldName }) =>
Object.assign(acc, { [fieldName]: acc[fieldName] || [] }),
abiJSON
);
abiDefinitions.serialize(buffer, abiJSON);
const serializedAbiHexString = Buffer.from(buffer.asUint8Array()).toString('hex');
const actions = [
{
account: 'eosio',
name: 'setcode',
authorization: [
{
actor: 'dappservices',
permission: 'active',
},
],
data: {
account: 'dappservices',
code: wasmHexString,
vmtype: 0,
vmversion: 0
},
},
{
account: 'eosio',
name: 'setabi',
authorization: [
{
actor: 'dappservices',
permission: 'active',
},
],
data: {
account: 'dappservices',
abi: serializedAbiHexString,
}
},
{
account: "dappservices",
name: "updinflation",
authorization: [
{
actor: "dappservices",
permission: "active"
}
],
data: {
inflation_per_block: 2.2159110624367184e-9
}
}
];
(async () => {
try {
// console.log(api)
// api.cachedAbis = await api2.getCachedAbi("dappservices");
console.log(api.cachedAbis);
const serialized_actions = await api.serializeActions(actions)
// BUILD THE MULTISIG PROPOSE TRANSACTION
const proposeInput = {
proposer: 'natdeveloper',
proposal_name: 'updinflation',
requested: [{"actor":"dappservices","permission":"active"}],
trx: {
expiration: '2021-07-29T23:11:48',
ref_block_num: 22480,
ref_block_prefix: 3659047377,
max_net_usage_words: 0,
max_cpu_usage_ms: 0,
delay_sec: 0,
context_free_actions: [],
actions: serialized_actions,
transaction_extensions: []
}
};
//PROPOSE THE TRANSACTION
const result = await api.transact({
actions: [{
account: 'eosio.msig',
name: 'propose',
authorization: [{
actor: 'natdeveloper',
permission: 'active',
}],
data: proposeInput,
}]
}, {
blocksBehind: 3,
expireSeconds: 30,
broadcast: true,
sign: true
});
}
catch(e) {
console.log(e)
}
})();Mainnet
Last updated
Was this helpful?