首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加密货币如何验证挖矿奖励是由系统发起且有效的?

加密货币如何验证挖矿奖励是由系统发起且有效的?
EN

Stack Overflow用户
提问于 2019-05-26 05:17:01
回答 1查看 55关注 0票数 0

我想验证挖掘奖励事务实际上是有效的,并且它是由系统发起的。目前,我不知道如何验证系统的身份,如果不对公钥和私钥进行硬编码,这同样不安全

目前,我使用椭圆来生成密钥并验证它们。

代码语言:javascript
复制
  valid() {
    if (this.from === null) {
        return true;
        }
    if (!this.signature || this.signature.length === 0) {
        console.log('No signature on this transaction!\n');
        return false;
    }
    if (typeof this.amount !== 'number' || this.amount <= 0) {
        console.log('Amount must be a positive number\n');
        return false;
    }
    const publicKey = ec.keyFromPublic(this.from, "hex");
    return publicKey.verify(this.hash(), this.signature)
}

现在,如果from地址为空,这意味着它是挖掘奖励,则事务自动为真。然而,一些人可以简单地给出一个"null“的发件人地址,然后基本上给自己钱。

我如何验证挖掘奖励是正确的,并且只有在挖掘实际上已经完成的情况下才来自系统。

EN

回答 1

Stack Overflow用户

发布于 2019-05-28 13:55:20

这取决于采矿奖励是如何支付的。在基于账户的模型中,头部中包含的矿工余额可以根据挖掘奖励增加。世界状态不匹配将导致块被拒绝,从而确保系统相应地增加余额。在UTXO模型中,一种方法是让挖掘器自己对空事务进行签名。这将验证他们是否控制了“收件人”地址的私钥,但这并不是真正必要的。这完全取决于您的系统的限制。在比特币中,coinbase交易的规则是它应该是区块中的第一笔交易,并且输出utxo包含的金额等于当前开采奖励+该区块包含的费用。根据BIP 34,coinbase还应包括当前块高度作为其数据的一部分。有关比特币的coinbase交易的更多信息,请参见this

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56308774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档