mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-22 05:05:48 +00:00
Add claim encoding for payment channels
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
/* eslint-disable func-style */
|
||||
|
||||
const BN = require('bn.js');
|
||||
const types = require('./types');
|
||||
const {HashPrefix} = require('./hash-prefixes');
|
||||
const {BinaryParser} = require('./serdes/binary-parser');
|
||||
@@ -30,6 +31,19 @@ function signingData(tx, prefix = HashPrefix.transactionSig) {
|
||||
return serializeObject(tx, {prefix, signingFieldsOnly: true});
|
||||
}
|
||||
|
||||
function signingClaimData(claim) {
|
||||
const prefix = HashPrefix.paymentChannelClaim
|
||||
const channel = types.Hash256.from(claim.channel).toBytes()
|
||||
const amount = new types.UInt64(new BN(claim.amount)).toBytes();
|
||||
|
||||
const bytesList = new BytesList();
|
||||
|
||||
bytesList.put(prefix)
|
||||
bytesList.put(channel)
|
||||
bytesList.put(amount)
|
||||
return bytesList.toBytes()
|
||||
}
|
||||
|
||||
function multiSigningData(tx, signingAccount) {
|
||||
const prefix = HashPrefix.transactionMultiSig;
|
||||
const suffix = types.AccountID.from(signingAccount).toBytes();
|
||||
@@ -47,6 +61,7 @@ module.exports = {
|
||||
parseBytes,
|
||||
multiSigningData,
|
||||
signingData,
|
||||
signingClaimData,
|
||||
binaryToJSON,
|
||||
sha512Half,
|
||||
transactionID,
|
||||
|
||||
@@ -21,7 +21,9 @@ const HashPrefix = {
|
||||
// validation for signing
|
||||
validation: bytes(0x56414C00),
|
||||
// proposal for signing
|
||||
proposal: bytes(0x50525000)
|
||||
proposal: bytes(0x50525000),
|
||||
// payment channel claim
|
||||
paymentChannelClaim: bytes(0x434C4D00)
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
|
||||
@@ -3,6 +3,7 @@ const coreTypes = require('./coretypes');
|
||||
const {quality,
|
||||
binary: {bytesToHex,
|
||||
signingData,
|
||||
signingClaimData,
|
||||
multiSigningData,
|
||||
binaryToJSON,
|
||||
serializeObject}} = coreTypes;
|
||||
@@ -22,6 +23,11 @@ function encodeForSigning(json) {
|
||||
return bytesToHex(signingData(json));
|
||||
}
|
||||
|
||||
function encodeForSigningClaim(json) {
|
||||
assert(typeof json === 'object');
|
||||
return bytesToHex(signingClaimData(json));
|
||||
}
|
||||
|
||||
function encodeForMultisigning(json, signer) {
|
||||
assert(typeof json === 'object');
|
||||
assert.equal(json.SigningPubKey, '');
|
||||
@@ -42,6 +48,7 @@ module.exports = {
|
||||
decode,
|
||||
encode,
|
||||
encodeForSigning,
|
||||
encodeForSigningClaim,
|
||||
encodeForMultisigning,
|
||||
encodeQuality,
|
||||
decodeQuality
|
||||
|
||||
Reference in New Issue
Block a user