Add claim encoding for payment channels

This commit is contained in:
Ben Sharafian
2017-03-30 19:18:09 +02:00
parent e0aa8b6db3
commit 8d0d772835
4 changed files with 42 additions and 2 deletions

View File

@@ -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,

View File

@@ -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 = {

View File

@@ -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