PHP WebShell
Текущая директория: /opt/BitGoJS/modules/utxo-lib/src/bitgo/zcash
Просмотр файла: address.ts
import * as assert from 'assert';
import { payments } from 'bitcoinjs-lib';
import * as types from 'bitcoinjs-lib/src/types';
import { Base58CheckResult } from 'bitcoinjs-lib/src/address';
import { isZcash, Network } from '../../networks';
const bs58check = require('bs58check');
const typeforce = require('typeforce');
export function fromBase58Check(address: string): Base58CheckResult {
const payload = bs58check.decode(address);
const version = payload.readUInt16BE(0);
const hash = payload.slice(2);
return { version, hash };
}
export function toBase58Check(hash: Buffer, version: number): string {
typeforce(types.tuple(types.Hash160bit, types.Number), arguments);
const payload = Buffer.allocUnsafe(22);
payload.writeUInt16BE(version, 0);
hash.copy(payload, 2);
return bs58check.encode(payload);
}
export function fromOutputScript(outputScript: Buffer, network: Network): string {
assert(isZcash(network));
let o;
let prefix;
try {
o = payments.p2pkh({ output: outputScript });
prefix = network.pubKeyHash;
} catch (e) {}
try {
o = payments.p2sh({ output: outputScript });
prefix = network.scriptHash;
} catch (e) {}
if (!o || !o.hash || prefix === undefined) {
throw new Error(`unsupported outputScript`);
}
return toBase58Check(o.hash, prefix);
}
export function toOutputScript(address: string, network: Network): Buffer {
assert(isZcash(network));
const { version, hash } = fromBase58Check(address);
if (version === network.pubKeyHash) {
return payments.p2pkh({ hash }).output as Buffer;
}
if (version === network.scriptHash) {
return payments.p2sh({ hash }).output as Buffer;
}
throw new Error(address + ' has no matching Script');
}
Выполнить команду
Для локальной разработки. Не используйте в интернете!