UNPKG

openchain-sdk-yxl-ts

Version:

OpenChain SDK for browser

51 lines (41 loc) 1.07 kB
import protobuf from 'protobufjs'; import long from 'long'; import bundleJson from '../../crypto/protobuf/bundle.js'; /** * contractInvokeByBU Operation * @param args * @return {object} */ export default function (args) { try { const { sourceAddress, contractAddress, opAmount, metadata, input } = args; const root = protobuf.Root.fromJSON(bundleJson); const payCoin = root.lookupType('protocol.OperationPayCoin'); let opt = { destAddress: contractAddress, }; if (opAmount) { opt.amount = long.fromValue(opAmount); } if (input) { opt.input = input; } const payCoinMsg = payCoin.create(opt); const operation = root.lookupType('protocol.Operation'); const payload = { payCoin: payCoinMsg, type: operation.Type.PAY_COIN, sourceAddress, }; if (metadata) { payload.metadata = metadata; } const err = operation.verify(payload); if (err) { throw Error(err); } return operation.create(payload); } catch (err) { throw err; } };