UNPKG

@coolwallet/sol

Version:
38 lines (37 loc) 5.46 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.createProgramAddressSync = createProgramAddressSync; var _bs = _interopRequireDefault(require("bs58")); var _bn = _interopRequireDefault(require("bn.js")); var _jsSha = require("js-sha256"); var _stringUtil = require("./stringUtil"); var _ed = require("./ed25519"); var MAX_SEED_LENGTH = 32; var toBuffer = function toBuffer(arr) { if (Buffer.isBuffer(arr)) { return arr; } else if (arr instanceof Uint8Array) { return Buffer.from(arr.buffer, arr.byteOffset, arr.byteLength); } else { return Buffer.from(arr); } }; function createProgramAddressSync(seeds, programId) { var buffer = Buffer.alloc(0); seeds.forEach(function (seed) { if (seed.length > MAX_SEED_LENGTH) { throw new TypeError("Max seed length exceeded"); } buffer = Buffer.concat([buffer, toBuffer(seed)]); }); buffer = Buffer.concat([buffer, (0, _stringUtil.toBase58Buffer)(programId), Buffer.from('ProgramDerivedAddress')]); var publicKeyBytes = new _bn["default"]((0, _jsSha.sha256)(buffer), 16).toArray(undefined, 32); if ((0, _ed.is_on_curve)(publicKeyBytes)) { throw new Error("Invalid seeds, address must fall off the curve"); } return _bs["default"].encode(publicKeyBytes); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYnMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9ibiIsIl9qc1NoYSIsIl9zdHJpbmdVdGlsIiwiX2VkIiwiTUFYX1NFRURfTEVOR1RIIiwidG9CdWZmZXIiLCJhcnIiLCJCdWZmZXIiLCJpc0J1ZmZlciIsIlVpbnQ4QXJyYXkiLCJmcm9tIiwiYnVmZmVyIiwiYnl0ZU9mZnNldCIsImJ5dGVMZW5ndGgiLCJjcmVhdGVQcm9ncmFtQWRkcmVzc1N5bmMiLCJzZWVkcyIsInByb2dyYW1JZCIsImFsbG9jIiwiZm9yRWFjaCIsInNlZWQiLCJsZW5ndGgiLCJUeXBlRXJyb3IiLCJjb25jYXQiLCJ0b0Jhc2U1OEJ1ZmZlciIsInB1YmxpY0tleUJ5dGVzIiwiQk4iLCJzaGEyNTYiLCJ0b0FycmF5IiwidW5kZWZpbmVkIiwiaXNfb25fY3VydmUiLCJFcnJvciIsImJhc2U1OCIsImVuY29kZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9hY2NvdW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlNTggZnJvbSAnYnM1OCc7XG5pbXBvcnQgQk4gZnJvbSAnYm4uanMnO1xuaW1wb3J0IHsgc2hhMjU2IH0gZnJvbSAnanMtc2hhMjU2JztcbmltcG9ydCAqIGFzIHR5cGVzIGZyb20gJy4uL2NvbmZpZy90eXBlcyc7XG5pbXBvcnQgeyB0b0Jhc2U1OEJ1ZmZlciB9IGZyb20gJy4vc3RyaW5nVXRpbCc7XG5pbXBvcnQgeyBpc19vbl9jdXJ2ZSB9IGZyb20gJy4vZWQyNTUxOSc7XG5cbmNvbnN0IE1BWF9TRUVEX0xFTkdUSCA9IDMyO1xuXG5jb25zdCB0b0J1ZmZlciA9IChhcnI6IEJ1ZmZlciB8IFVpbnQ4QXJyYXkgfCBBcnJheTxudW1iZXI+KTogQnVmZmVyID0+IHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihhcnIpKSB7XG4gICAgcmV0dXJuIGFycjtcbiAgfSBlbHNlIGlmIChhcnIgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGFyci5idWZmZXIsIGFyci5ieXRlT2Zmc2V0LCBhcnIuYnl0ZUxlbmd0aCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGFycik7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZVByb2dyYW1BZGRyZXNzU3luYyhzZWVkczogQXJyYXk8QnVmZmVyIHwgVWludDhBcnJheT4sIHByb2dyYW1JZDogdHlwZXMuQWRkcmVzcyk6IHN0cmluZyB7XG4gIGxldCBidWZmZXIgPSBCdWZmZXIuYWxsb2MoMCk7XG4gIHNlZWRzLmZvckVhY2goZnVuY3Rpb24gKHNlZWQpIHtcbiAgICBpZiAoc2VlZC5sZW5ndGggPiBNQVhfU0VFRF9MRU5HVEgpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE1heCBzZWVkIGxlbmd0aCBleGNlZWRlZGApO1xuICAgIH1cbiAgICBidWZmZXIgPSBCdWZmZXIuY29uY2F0KFtidWZmZXIsIHRvQnVmZmVyKHNlZWQpXSk7XG4gIH0pO1xuICBidWZmZXIgPSBCdWZmZXIuY29uY2F0KFtidWZmZXIsIHRvQmFzZTU4QnVmZmVyKHByb2dyYW1JZCksIEJ1ZmZlci5mcm9tKCdQcm9ncmFtRGVyaXZlZEFkZHJlc3MnKV0pO1xuICBjb25zdCBwdWJsaWNLZXlCeXRlcyA9IG5ldyBCTihzaGEyNTYoYnVmZmVyKSwgMTYpLnRvQXJyYXkodW5kZWZpbmVkLCAzMik7XG4gIGlmIChpc19vbl9jdXJ2ZShwdWJsaWNLZXlCeXRlcykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2VlZHMsIGFkZHJlc3MgbXVzdCBmYWxsIG9mZiB0aGUgY3VydmVgKTtcbiAgfVxuICByZXR1cm4gYmFzZTU4LmVuY29kZShwdWJsaWNLZXlCeXRlcyk7XG59XG5cbmV4cG9ydCB7IGNyZWF0ZVByb2dyYW1BZGRyZXNzU3luYyB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsR0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsR0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBRixPQUFBO0FBRUEsSUFBQUcsV0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksR0FBQSxHQUFBSixPQUFBO0FBRUEsSUFBTUssZUFBZSxHQUFHLEVBQUU7QUFFMUIsSUFBTUMsUUFBUSxHQUFHLFNBQVhBLFFBQVFBLENBQUlDLEdBQXdDLEVBQWE7RUFDckUsSUFBSUMsTUFBTSxDQUFDQyxRQUFRLENBQUNGLEdBQUcsQ0FBQyxFQUFFO0lBQ3hCLE9BQU9BLEdBQUc7RUFDWixDQUFDLE1BQU0sSUFBSUEsR0FBRyxZQUFZRyxVQUFVLEVBQUU7SUFDcEMsT0FBT0YsTUFBTSxDQUFDRyxJQUFJLENBQUNKLEdBQUcsQ0FBQ0ssTUFBTSxFQUFFTCxHQUFHLENBQUNNLFVBQVUsRUFBRU4sR0FBRyxDQUFDTyxVQUFVLENBQUM7RUFDaEUsQ0FBQyxNQUFNO0lBQ0wsT0FBT04sTUFBTSxDQUFDRyxJQUFJLENBQUNKLEdBQUcsQ0FBQztFQUN6QjtBQUNGLENBQUM7QUFFRCxTQUFTUSx3QkFBd0JBLENBQUNDLEtBQWlDLEVBQUVDLFNBQXdCLEVBQVU7RUFDckcsSUFBSUwsTUFBTSxHQUFHSixNQUFNLENBQUNVLEtBQUssQ0FBQyxDQUFDLENBQUM7RUFDNUJGLEtBQUssQ0FBQ0csT0FBTyxDQUFDLFVBQVVDLElBQUksRUFBRTtJQUM1QixJQUFJQSxJQUFJLENBQUNDLE1BQU0sR0FBR2hCLGVBQWUsRUFBRTtNQUNqQyxNQUFNLElBQUlpQixTQUFTLDJCQUEyQixDQUFDO0lBQ2pEO0lBQ0FWLE1BQU0sR0FBR0osTUFBTSxDQUFDZSxNQUFNLENBQUMsQ0FBQ1gsTUFBTSxFQUFFTixRQUFRLENBQUNjLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDbEQsQ0FBQyxDQUFDO0VBQ0ZSLE1BQU0sR0FBR0osTUFBTSxDQUFDZSxNQUFNLENBQUMsQ0FBQ1gsTUFBTSxFQUFFLElBQUFZLDBCQUFjLEVBQUNQLFNBQVMsQ0FBQyxFQUFFVCxNQUFNLENBQUNHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7RUFDakcsSUFBTWMsY0FBYyxHQUFHLElBQUlDLGNBQUUsQ0FBQyxJQUFBQyxhQUFNLEVBQUNmLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDZ0IsT0FBTyxDQUFDQyxTQUFTLEVBQUUsRUFBRSxDQUFDO0VBQ3hFLElBQUksSUFBQUMsZUFBVyxFQUFDTCxjQUFjLENBQUMsRUFBRTtJQUMvQixNQUFNLElBQUlNLEtBQUssaURBQWlELENBQUM7RUFDbkU7RUFDQSxPQUFPQyxjQUFNLENBQUNDLE1BQU0sQ0FBQ1IsY0FBYyxDQUFDO0FBQ3RDIiwiaWdub3JlTGlzdCI6W119