【发布时间】:2021-03-01 19:53:09
【问题描述】:
如果我要问一些愚蠢的问题,请不要杀了我。但我在整个加密世界中都很菜鸟,而且我对它的技术非常着迷。
因此,出于教育目的,我决定构建自己的区块链,或多或少遵循比特币原则(使用 secpbk1 曲线生成 ECC 密钥对,SHA256 作为散列算法,基于前一个块的时间戳的动态差异,p2p 连接等。)。但我已经到了对区块链钱包本身感到非常困惑的地步。
就我目前了解到的情况而言,每笔交易必须由钱包签名。所以我的交易基本上有三个字段:input、outputs和id。由于用户的钱包签署了交易的 outputs 字段,因此如果不使用属于 input 中包含的公钥的相同私钥再次签名,则无法再更改此字段em> 领域,如何奖励矿工?
如果我做对了,矿工会使用 outputs 字段中的费用创建一个由链以某种方式签署的交易,或者通过要求链本身生成并签署一个特殊的 reward 该矿工的交易。
我遵循的指南是使用第二种方法,每次在客户端上执行程序时都会生成一个区块链钱包。这种方法让我很困惑:
客户不会在每次重新上线时为“他的”区块链生成一个新钱包吗?如果是这样,这不会给链上签名的交易造成混乱吗?由于每个矿工(因此是同行)签署自己的奖励将使用与其他同行不同的区块链钱包?这不会导致任何问题吗?
我可能想到的第一个是,如果我们生成一个新的区块链钱包来为矿工签署奖励,每个节点都会创建一个不同的钱包,那么这不会导致链中出现许多“幽灵”钱包,从哪里吐出奖励代币?这应该发生吗?
因为我认为使用费用来奖励矿工肯定更直接,但这根本不能解决我的疑问。由于交易的输出是在创建时签署的,那么发起交易的对等方怎么可能提前知道找到该区块的可能矿工?如果他不知道,矿工怎么可能在不篡改交易本身的情况下“提取”其奖励?当然,它可以创建一个新交易,并将其添加到区块中。但谁会签署该交易?这些奖励代币从哪里来?
如果答案不是每次都生成一个新钱包,那么你可能将链钱包的第一个私钥存储在哪里,没有人可以看到它,但仍然可以使用它,而无需放置中间有服务器吗?
在我看来,这打破了整个去中心化的概念,并会增加单点故障。
我还实现了一个交易池,每当矿工请求将其中的一个子集标记在一个块中时,它就会自动过滤掉无效(被篡改的)交易。但这是否意味着该唯一例外的矿工可以篡改交易,因为它将在区块中“伪造”?那么,一旦它进入链中就被篡改了,谁给它一个 *** 呢? MEEEEEH,听起来一点也不好听。
我非常困惑,我在晚上梦到钥匙对。请帮帮我。
【问题讨论】:
标签: blockchain bitcoin cryptocurrency