51 lines
1.6 KiB
JavaScript
51 lines
1.6 KiB
JavaScript
'use strict';
|
|
import TransactionBase from './TransactionBase.js'
|
|
import { QORT_DECIMALS } from '../constants.js'
|
|
// import { Sha256 } from 'asmcrypto.js/dist_es5/entry-export_all.js'
|
|
|
|
export default class PaymentTransaction extends TransactionBase {
|
|
constructor () {
|
|
super()
|
|
this.type = 20
|
|
this.amount = 42 * Math.pow(10, 8)
|
|
this.tests.push(
|
|
() => {
|
|
if (!(this._amount >= 0)) {
|
|
return 'Invalid amount ' + this._amount / QORT_DECIMALS
|
|
}
|
|
return true
|
|
},
|
|
() => {
|
|
if (!(this._recipient instanceof Uint8Array && this._recipient.length == 25)) {
|
|
return 'Invalid recipient ' + Base58.encode(this._recipient)
|
|
}
|
|
return true
|
|
}
|
|
)
|
|
}
|
|
|
|
set recipient (recipient) { // Always Base58 encoded. Accepts Uint8Array or Base58 string.
|
|
this._recipient = recipient instanceof Uint8Array ? recipient : this.constructor.Base58.decode(recipient)
|
|
}
|
|
set amount (amount) {
|
|
this._amount = amount * QORT_DECIMALS
|
|
this._amountBytes = this.constructor.utils.int64ToBytes(amount)
|
|
}
|
|
|
|
set reference (seed) {
|
|
const sha = seed => new Sha512().process(seed).finish().result
|
|
let reference = sha(sha(seed))
|
|
reference += reference
|
|
}
|
|
|
|
get params () {
|
|
const params = super.params
|
|
params.push(
|
|
this._recipient,
|
|
this._amountBytes,
|
|
this._feeBytes
|
|
)
|
|
return params
|
|
}
|
|
}
|