PHP WebShell

Текущая директория: /opt/BitGoJS/modules/sdk-coin-eth/dist/test/unit

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

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
    var ownKeys = function(o) {
        ownKeys = Object.getOwnPropertyNames || function (o) {
            var ar = [];
            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
            return ar;
        };
        return ownKeys(o);
    };
    return function (mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
        __setModuleDefault(result, mod);
        return result;
    };
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const should_1 = __importDefault(require("should"));
const src_1 = require("../../src");
const testData = __importStar(require("../resources/eth"));
const ethereumjs_util_1 = require("ethereumjs-util");
const ethereumjs_abi_1 = __importDefault(require("ethereumjs-abi"));
describe('ETH util library', function () {
    describe('sign operation', function () {
        it('should return a correct signed transaction', async () => {
            const SIGNATURE = await (0, src_1.sign)(testData.LEGACY_TXDATA, testData.KEYPAIR_PRV);
            should_1.default.equal(SIGNATURE, testData.ENCODED_LEGACY_TRANSACTION);
        });
        it('should fail with missing prv key', function () {
            (0, src_1.sign)(testData.LEGACY_TXDATA, testData.KEYPAIR_PUB).should.be.rejectedWith(new RegExp('Missing private key'));
        });
    });
    it('Should validate valid createForwarder Id for forwarder', function () {
        should_1.default.equal((0, src_1.getAddressInitializationData)(), src_1.createForwarderMethodId);
    });
    it('should validate valid address', function () {
        should_1.default.equal((0, src_1.isValidEthAddress)(testData.ACCOUNT_1), true);
    });
    it('should validate invalid address', function () {
        should_1.default.equal((0, src_1.isValidEthAddress)(testData.INVALID_ACCOUNT), false);
    });
    it('should generate a proper address', function () {
        should_1.default.equal((0, src_1.calculateForwarderAddress)(testData.CONTRACT_ADDRESS, 1), '0x016e4eee27f3f355bbb78d0e5eb813c4761822c9');
    });
    it('should generate a proper forwarder version 1 address', function () {
        const initCode = (0, src_1.getProxyInitcode)(testData.FORWARDER_IMPLEMENTATION_ADDRESS);
        const saltBuffer = (0, ethereumjs_util_1.setLengthLeft)(Buffer.from('02', 'hex'), 32);
        // Hash the wallet base address with the given salt, so the address directly relies on the base address
        const calculationSalt = (0, ethereumjs_util_1.bufferToHex)(ethereumjs_abi_1.default.soliditySHA3(['address', 'bytes32'], [testData.BASE_ADDRESS, saltBuffer]));
        should_1.default.equal((0, src_1.calculateForwarderV1Address)(testData.FORWARDER_FACTORY_ADDRESS, calculationSalt, initCode), '0x7cdc37afc70221410bea40ce3b62c2f7bf383890');
    });
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsbUNBUW1CO0FBQ25CLDJEQUE2QztBQUM3QyxxREFBNkQ7QUFDN0Qsb0VBQXlDO0FBRXpDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRTtJQUMzQixRQUFRLENBQUMsZ0JBQWdCLEVBQUU7UUFDekIsRUFBRSxDQUFDLDRDQUE0QyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzFELE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBQSxVQUFJLEVBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDM0UsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGtDQUFrQyxFQUFFO1lBQ3JDLElBQUEsVUFBSSxFQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQztRQUMvRyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHdEQUF3RCxFQUFFO1FBQzNELGdCQUFNLENBQUMsS0FBSyxDQUFDLElBQUEsa0NBQTRCLEdBQUUsRUFBRSw2QkFBdUIsQ0FBQyxDQUFDO0lBQ3hFLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLCtCQUErQixFQUFFO1FBQ2xDLGdCQUFNLENBQUMsS0FBSyxDQUFDLElBQUEsdUJBQWlCLEVBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGlDQUFpQyxFQUFFO1FBQ3BDLGdCQUFNLENBQUMsS0FBSyxDQUFDLElBQUEsdUJBQWlCLEVBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25FLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGtDQUFrQyxFQUFFO1FBQ3JDLGdCQUFNLENBQUMsS0FBSyxDQUFDLElBQUEsK0JBQXlCLEVBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxFQUFFLDRDQUE0QyxDQUFDLENBQUM7SUFDdEgsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsc0RBQXNELEVBQUU7UUFDekQsTUFBTSxRQUFRLEdBQUcsSUFBQSxzQkFBZ0IsRUFBQyxRQUFRLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUM3RSxNQUFNLFVBQVUsR0FBRyxJQUFBLCtCQUFhLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFL0QsdUdBQXVHO1FBQ3ZHLE1BQU0sZUFBZSxHQUFHLElBQUEsNkJBQVcsRUFDakMsd0JBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQ3RGLENBQUM7UUFDRixnQkFBTSxDQUFDLEtBQUssQ0FDVixJQUFBLGlDQUEyQixFQUFDLFFBQVEsQ0FBQyx5QkFBeUIsRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDLEVBQzFGLDRDQUE0QyxDQUM3QyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7XG4gIHNpZ24sXG4gIGlzVmFsaWRFdGhBZGRyZXNzLFxuICBnZXRBZGRyZXNzSW5pdGlhbGl6YXRpb25EYXRhLFxuICBjYWxjdWxhdGVGb3J3YXJkZXJBZGRyZXNzLFxuICBjYWxjdWxhdGVGb3J3YXJkZXJWMUFkZHJlc3MsXG4gIGdldFByb3h5SW5pdGNvZGUsXG4gIGNyZWF0ZUZvcndhcmRlck1ldGhvZElkLFxufSBmcm9tICcuLi8uLi9zcmMnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vcmVzb3VyY2VzL2V0aCc7XG5pbXBvcnQgeyBidWZmZXJUb0hleCwgc2V0TGVuZ3RoTGVmdCB9IGZyb20gJ2V0aGVyZXVtanMtdXRpbCc7XG5pbXBvcnQgRXRoZXJldW1BYmkgZnJvbSAnZXRoZXJldW1qcy1hYmknO1xuXG5kZXNjcmliZSgnRVRIIHV0aWwgbGlicmFyeScsIGZ1bmN0aW9uICgpIHtcbiAgZGVzY3JpYmUoJ3NpZ24gb3BlcmF0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgY29ycmVjdCBzaWduZWQgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBTSUdOQVRVUkUgPSBhd2FpdCBzaWduKHRlc3REYXRhLkxFR0FDWV9UWERBVEEsIHRlc3REYXRhLktFWVBBSVJfUFJWKTtcbiAgICAgIHNob3VsZC5lcXVhbChTSUdOQVRVUkUsIHRlc3REYXRhLkVOQ09ERURfTEVHQUNZX1RSQU5TQUNUSU9OKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB3aXRoIG1pc3NpbmcgcHJ2IGtleScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNpZ24odGVzdERhdGEuTEVHQUNZX1RYREFUQSwgdGVzdERhdGEuS0VZUEFJUl9QVUIpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgobmV3IFJlZ0V4cCgnTWlzc2luZyBwcml2YXRlIGtleScpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ1Nob3VsZCB2YWxpZGF0ZSB2YWxpZCBjcmVhdGVGb3J3YXJkZXIgSWQgZm9yIGZvcndhcmRlcicsIGZ1bmN0aW9uICgpIHtcbiAgICBzaG91bGQuZXF1YWwoZ2V0QWRkcmVzc0luaXRpYWxpemF0aW9uRGF0YSgpLCBjcmVhdGVGb3J3YXJkZXJNZXRob2RJZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdmFsaWRhdGUgdmFsaWQgYWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICBzaG91bGQuZXF1YWwoaXNWYWxpZEV0aEFkZHJlc3ModGVzdERhdGEuQUNDT1VOVF8xKSwgdHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdmFsaWRhdGUgaW52YWxpZCBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgIHNob3VsZC5lcXVhbChpc1ZhbGlkRXRoQWRkcmVzcyh0ZXN0RGF0YS5JTlZBTElEX0FDQ09VTlQpLCBmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2VuZXJhdGUgYSBwcm9wZXIgYWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICBzaG91bGQuZXF1YWwoY2FsY3VsYXRlRm9yd2FyZGVyQWRkcmVzcyh0ZXN0RGF0YS5DT05UUkFDVF9BRERSRVNTLCAxKSwgJzB4MDE2ZTRlZWUyN2YzZjM1NWJiYjc4ZDBlNWViODEzYzQ3NjE4MjJjOScpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdlbmVyYXRlIGEgcHJvcGVyIGZvcndhcmRlciB2ZXJzaW9uIDEgYWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbml0Q29kZSA9IGdldFByb3h5SW5pdGNvZGUodGVzdERhdGEuRk9SV0FSREVSX0lNUExFTUVOVEFUSU9OX0FERFJFU1MpO1xuICAgIGNvbnN0IHNhbHRCdWZmZXIgPSBzZXRMZW5ndGhMZWZ0KEJ1ZmZlci5mcm9tKCcwMicsICdoZXgnKSwgMzIpO1xuXG4gICAgLy8gSGFzaCB0aGUgd2FsbGV0IGJhc2UgYWRkcmVzcyB3aXRoIHRoZSBnaXZlbiBzYWx0LCBzbyB0aGUgYWRkcmVzcyBkaXJlY3RseSByZWxpZXMgb24gdGhlIGJhc2UgYWRkcmVzc1xuICAgIGNvbnN0IGNhbGN1bGF0aW9uU2FsdCA9IGJ1ZmZlclRvSGV4KFxuICAgICAgRXRoZXJldW1BYmkuc29saWRpdHlTSEEzKFsnYWRkcmVzcycsICdieXRlczMyJ10sIFt0ZXN0RGF0YS5CQVNFX0FERFJFU1MsIHNhbHRCdWZmZXJdKVxuICAgICk7XG4gICAgc2hvdWxkLmVxdWFsKFxuICAgICAgY2FsY3VsYXRlRm9yd2FyZGVyVjFBZGRyZXNzKHRlc3REYXRhLkZPUldBUkRFUl9GQUNUT1JZX0FERFJFU1MsIGNhbGN1bGF0aW9uU2FsdCwgaW5pdENvZGUpLFxuICAgICAgJzB4N2NkYzM3YWZjNzAyMjE0MTBiZWE0MGNlM2I2MmMyZjdiZjM4Mzg5MCdcbiAgICApO1xuICB9KTtcbn0pO1xuIl19

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


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