forked from Qortal/qortal-ui
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.6 KiB
50 lines
1.6 KiB
'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 |
|
} |
|
}
|
|
|