tic-traction/ActionTransfer.js

38 lines
1.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const Action = require('./Action.js')
const ticCrypto = require('tic.crypto')
const DAD = module.exports = function ActionTransfer (prop) {
this._class = this.constructor.name
this.setProp(prop) // 没有定义 ActionTransfer.prototype._model因此继承了上级Action.prototype._model因此通过this.setProp继承了上级Action定义的实例自有数据。另一个方案是调用 Action.call(this, prop)
this.type = this.constructor.name
}
DAD.__proto__ = Action
const MOM = DAD.prototype
MOM.__proto__ = Action.prototype
MOM.validateMe = function () {
// if (sender && sender.type !== 'multisig' && action.toAddress != action.actorAddress && sender.balance >= action.amount + action.fee){
return this.actorPubkey && this.toAddress && ticCrypto.pubkey2address(this.actorPubkey)!== this.toAddress // 不能转帐给自己。
&& this.amount && this.amount > 0 && (this.fee >= 0)
}
MOM.executableMe = async function() {
let balance = await wo.Store.getBalance(this.actorAddress)
return balance >= this.amount + this.fee
}
MOM.executeMe = async function () {
let balance = await wo.Store.getBalance(this.actorAddress)
if (balance >= this.amount + this.fee) {
await wo.Store.decrease(this.actorAddress, this.amount + this.fee)
await wo.Store.increase(this.toAddress, this.amount)
return this
}
return null
}
/** ****************** Public of class ********************/
DAD.api = {}