UNPKG

@kazeblockchain/kazejs

Version:

Javascript libraries for Kaze wallet

109 lines (96 loc) 2.57 kB
import { num2fixed8, fixed82num, num2VarInt } from '../utils' import { serializeTransactionInput, deserializeTransactionInput } from './components' /** * @param {StringStream} ss * @return {object} {claims: TransactionInput[]} */ const deserializeClaimExclusive = (ss) => { let out = { claims: [] } const claimLength = ss.readVarInt() for (let i = 0; i < claimLength; i++) { out.claims.push(deserializeTransactionInput(ss)) } return out } /** * @param {Transaction} tx - Transaction. * @return {string} hexstring */ const serializeClaimExclusive = (tx) => { if (tx.type !== 0x02) throw new Error() let out = num2VarInt(tx.claims.length) for (const claim of tx.claims) { out += serializeTransactionInput(claim) } return out } /** * @param {Transaction} tx * @return {object} {claims: TransactionInput[]} */ const getClaimExclusive = (tx) => { return Object.assign({ claims: [] }, { claims: tx.claims }) } /** * @param {StringStream} ss * @return {object} {} */ const deserializeContractExclusive = (ss) => { return {} } /** * @param {Transaction} tx - Transaction. * @return {string} '' */ const serializeContractExclusive = (tx) => { if (tx.type !== 0x80) throw new Error() return '' } /** * @param {Transaction} tx * @return {object} {} */ const getContractExclusive = (tx) => { return {} } /** * @param {StringStream} ss * @return {object} {script: string, STREAM: number} */ const deserializeInvocationExclusive = (ss) => { const script = ss.readVarBytes() const version = parseInt(ss.str.substr(2, 2), 16) const STREAM = version >= 1 ? fixed82num(ss.read(8)) : 0 return { script, STREAM } } /** * @param {Transaction} tx * @return {string} */ const serializeInvocationExclusive = (tx) => { if (tx.type !== 0xd1) throw new Error() let out = num2VarInt(tx.script.length / 2) out += tx.script if (tx.version >= 1) out += num2fixed8(tx.STREAM) return out } const getInvocationExclusive = (tx) => { return { script: tx.script || '', STREAM: tx.STREAM || 0 } } export const serializeExclusive = { 2: serializeClaimExclusive, 128: serializeContractExclusive, 209: serializeInvocationExclusive } export const deserializeExclusive = { 2: deserializeClaimExclusive, 128: deserializeContractExclusive, 209: deserializeInvocationExclusive } export const getExclusive = { 2: getClaimExclusive, 128: getContractExclusive, 209: getInvocationExclusive }