PHP WebShell

Текущая директория: /opt/BitGoJS/node_modules/@celo/contractkit/lib/test-utils

Просмотр файла: transferownership.js

"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
var __generator = (this && this.__generator) || function (thisArg, body) {
    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
    function verb(n) { return function (v) { return step([n, v]); }; }
    function step(op) {
        if (f) throw new TypeError("Generator is already executing.");
        while (_) try {
            if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
            if (y = 0, t) op = [op[0] & 2, t.value];
            switch (op[0]) {
                case 0: case 1: t = op; break;
                case 4: _.label++; return { value: op[1], done: false };
                case 5: _.label++; y = op[1]; op = [0]; continue;
                case 7: op = _.ops.pop(); _.trys.pop(); continue;
                default:
                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
                    if (t[2]) _.ops.pop();
                    _.trys.pop(); continue;
            }
            op = body.call(thisArg, _);
        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
    }
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.assumeOwnership = void 0;
var ganache_test_1 = require("@celo/dev-utils/lib/ganache-test");
var kit_1 = require("../kit");
// Implements a transfer ownership function using only contractkit primitives
var expConfigGovernance = ganache_test_1.NetworkConfig.governance;
function assumeOwnership(web3, to) {
    return __awaiter(this, void 0, void 0, function () {
        var kit, ONE_CGLD, accounts, accountWrapper, lockedGold, error_1, grandaMento, governance, multiSig, _a, _b, tenMillionCELO, ownershiptx, proposal, _c, _d, proposalReceipt, _e, _f, proposalId, tx, tx2, multisigTx, tx3, tx4;
        var _g, _h;
        return __generator(this, function (_j) {
            switch (_j.label) {
                case 0:
                    kit = (0, kit_1.newKitFromWeb3)(web3);
                    ONE_CGLD = web3.utils.toWei('1', 'ether');
                    return [4 /*yield*/, web3.eth.getAccounts()];
                case 1:
                    accounts = _j.sent();
                    return [4 /*yield*/, kit.contracts.getAccounts()];
                case 2:
                    accountWrapper = _j.sent();
                    return [4 /*yield*/, kit.contracts.getLockedGold()];
                case 3:
                    lockedGold = _j.sent();
                    _j.label = 4;
                case 4:
                    _j.trys.push([4, 7, , 8]);
                    return [4 /*yield*/, accountWrapper.createAccount().sendAndWaitForReceipt({ from: accounts[0] })];
                case 5:
                    _j.sent();
                    return [4 /*yield*/, lockedGold.lock().sendAndWaitForReceipt({ from: accounts[0], value: ONE_CGLD })];
                case 6:
                    _j.sent();
                    return [3 /*break*/, 8];
                case 7:
                    error_1 = _j.sent();
                    console.log('Account already created');
                    return [3 /*break*/, 8];
                case 8: return [4 /*yield*/, kit._web3Contracts.getGrandaMento()];
                case 9:
                    grandaMento = _j.sent();
                    return [4 /*yield*/, kit.contracts.getGovernance()];
                case 10:
                    governance = _j.sent();
                    _b = (_a = kit.contracts).getMultiSig;
                    return [4 /*yield*/, governance.getApprover()];
                case 11: return [4 /*yield*/, _b.apply(_a, [_j.sent()])];
                case 12:
                    multiSig = _j.sent();
                    tenMillionCELO = web3.utils.toWei('10000000');
                    return [4 /*yield*/, lockedGold.lock().sendAndWaitForReceipt({ value: tenMillionCELO })];
                case 13:
                    _j.sent();
                    ownershiptx = {
                        value: '0',
                        to: grandaMento._address,
                        input: grandaMento.methods.transferOwnership(to).encodeABI(),
                    };
                    proposal = [ownershiptx];
                    _d = (_c = governance.propose(proposal, 'URL')).sendAndWaitForReceipt;
                    _g = {
                        from: accounts[0]
                    };
                    return [4 /*yield*/, governance.getConfig()];
                case 14: return [4 /*yield*/, _d.apply(_c, [(_g.value = (_j.sent()).minDeposit.toNumber(),
                            _g)])];
                case 15:
                    _j.sent();
                    _f = (_e = governance.propose(proposal, 'URL')).sendAndWaitForReceipt;
                    _h = {
                        from: accounts[0]
                    };
                    return [4 /*yield*/, governance.getConfig()];
                case 16: return [4 /*yield*/, _f.apply(_e, [(_h.value = (_j.sent()).minDeposit.toNumber(),
                            _h)])];
                case 17:
                    proposalReceipt = _j.sent();
                    proposalId = proposalReceipt.events.ProposalQueued.returnValues.proposalId;
                    return [4 /*yield*/, governance.upvote(proposalId, accounts[1])];
                case 18:
                    tx = _j.sent();
                    return [4 /*yield*/, tx.sendAndWaitForReceipt()];
                case 19:
                    _j.sent();
                    return [4 /*yield*/, (0, ganache_test_1.timeTravel)(expConfigGovernance.dequeueFrequency, web3)];
                case 20:
                    _j.sent();
                    return [4 /*yield*/, governance.dequeueProposalsIfReady().sendAndWaitForReceipt()];
                case 21:
                    _j.sent();
                    return [4 /*yield*/, governance.approve(proposalId)];
                case 22:
                    tx2 = _j.sent();
                    return [4 /*yield*/, multiSig.submitOrConfirmTransaction(governance.address, tx2.txo)];
                case 23:
                    multisigTx = _j.sent();
                    return [4 /*yield*/, multisigTx.sendAndWaitForReceipt({ from: accounts[0] })];
                case 24:
                    _j.sent();
                    return [4 /*yield*/, governance.vote(proposalId, 'Yes')];
                case 25:
                    tx3 = _j.sent();
                    return [4 /*yield*/, tx3.sendAndWaitForReceipt({ from: accounts[0] })];
                case 26:
                    _j.sent();
                    return [4 /*yield*/, (0, ganache_test_1.timeTravel)(expConfigGovernance.referendumStageDuration, web3)];
                case 27:
                    _j.sent();
                    return [4 /*yield*/, governance.execute(proposalId)];
                case 28:
                    tx4 = _j.sent();
                    return [4 /*yield*/, tx4.sendAndWaitForReceipt()];
                case 29:
                    _j.sent();
                    return [2 /*return*/];
            }
        });
    });
}
exports.assumeOwnership = assumeOwnership;
//# sourceMappingURL=transferownership.js.map

Выполнить команду


Для локальной разработки. Не используйте в интернете!