2. 在 Action.api.prepare() 里,生成可运行的对象 typedAction 存入 ActionPool,而不是仅仅存数据 option.Action进去。 3. 删除 Action.getJson(),把 DAD.verifyXxx(action) 都改为 MOM.verifyXxx(). 4. 添加了 ActionRegisterChain.js 作为 应用链注册事务。
37 lines
1.3 KiB
JavaScript
37 lines
1.3 KiB
JavaScript
const Action = require('./Action.js')
|
||
|
||
const DAD = module.exports = function ActionRegisterChain (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 () {
|
||
let result = (this.fee >= wo.Config.MIN_FEE_ActionRegisterChain || 0) &&
|
||
// 检查事务内容数据,是否符合本类事务的格式和语义要求:
|
||
this.json &&
|
||
this.json.consensus && // 共识机制
|
||
this.json.network && // 网络机制
|
||
this.json.chain && // 区块机制
|
||
this.json.chain.period && // 出块周期
|
||
this.json.chain.size // 区块大小
|
||
return result
|
||
}
|
||
|
||
MOM.executableMe = async function() {
|
||
// todo: 检查是否已有同名的应用链?以及其他检查。
|
||
let balance = await wo.Store.getBalance(this.actorAddress)
|
||
return balance >= this.fee
|
||
}
|
||
|
||
MOM.executeMe = async function () {
|
||
return this
|
||
}
|
||
|
||
/** ****************** Public of class ********************/
|
||
|
||
DAD.api = {}
|