@silvana-one/coordination
Version:
Silvana Coordination Client
51 lines • 1.66 kB
JavaScript
import { Transaction, UpgradePolicy, } from "@mysten/sui/transactions";
import { suiClient } from "./sui-client.js";
export async function buildUpgradeTx(params) {
const { modules, dependencies, digest, address, keypair, packageID, upgradeCap, } = params;
const tx = new Transaction();
const ticket = tx.moveCall({
target: "0x2::package::authorize_upgrade",
arguments: [
tx.object(upgradeCap),
tx.pure.u8(UpgradePolicy.COMPATIBLE),
tx.pure.vector("u8", digest),
],
});
const upgradeData = tx.upgrade({
package: packageID,
ticket,
modules,
dependencies,
});
//console.log("upgradeData", upgradeData);
const commitData = tx.moveCall({
target: "0x2::package::commit_upgrade",
arguments: [tx.object(upgradeCap), upgradeData],
});
//console.log("commitData", commitData);
const paginatedCoins = await suiClient.getCoins({
owner: address,
});
const coins = paginatedCoins.data.map((coin) => {
return {
objectId: coin.coinObjectId,
version: coin.version,
digest: coin.digest,
};
});
//console.log("coins", coins);
tx.setSender(address);
tx.setGasOwner(address);
tx.setGasPayment(coins);
//console.log("tx", await tx.toJSON());
tx.setGasBudget(300_000_000);
//console.log("tx", await tx.toJSON());
console.time("sign");
// const signedTx = await tx.sign({
// signer: keypair,
// client: suiClient,
// });
console.timeEnd("sign");
return { tx };
}
//# sourceMappingURL=upgrade.js.map