主页 > imtoken怎么注册 > btc 私钥命令

btc 私钥命令

imtoken怎么注册 2023-02-11 07:19:57

转自北京大学肖真老师《区​​块链技术与应用》公开课

北京大学肖震老师“区块链技术与应用”公开课_bilibili

p>

比特币问答

如果在转账交易过程中收款人不在线(未连接到比特币网络)怎么办?

转账交易只需要记录在区块链上,就可以将比特币从一个账户转移到另一个账户,无论收款人是否在线。

假设全节点收到一笔转账交易,有没有可能全节点从来没有听到过转账交易中的收款人地址。

可能,因为比特币账户只需要在本地生成。只有当账户第一次收到钱时,其他节点才会知道该节点的存在。

如果账户私钥丢失了怎么办?

没有办法。因为比特币是一种去中心化的货币,没有第三方中央权威来重置密码,所以账户里的钱就变成了死钱。

通过加密货币交易所(中心化机构),一般需要提供身份证明。如果您忘记了私钥,您可以向交易所申请找回私钥。但是,目前此类货币的兑换仍处于缺乏监管的状态,并不一定具有公信力。而且,它只是充当“中介”,这与“丢失的私钥没有里面的比特币是无法找回的”这个问题的答案并不冲突。

历史上,交易所被黑客盗取大量加密货币的事件屡见不鲜2010btc私钥地址,其中最著名的就是Mt. GOX(中文翻译:门头沟)事件。该交易所曾经是全球最大的比特币交易所,约占全球比特币交易量的70%,总部位于日本。后来,由于攻击导致大量比特币丢失,交易所破产,其CEO被判入狱。

另外还有守卫偷窃的交易所,工作人员带钱跑路(有点类似rm -rf */删库跑路)。

私钥泄露怎么办?

尽快将剩余的 BTC 转入其他安全账户。没有第三方中心机构可以重置密码或冻结账户,您只能对自己负责。

BTC系统中的账户为公私钥对,密码为私钥,不可更改。

转账地址写错了怎么办?

别无他法,只能自认倒霉,无法取消已过帐的交易。如果转账不存在到某个地址,那部分比特币就会变成死钱。当然,比特币系统中的 UTXO 会永久保存交易并记录不存在的地址。所以对全节点不友好。

之前在 BTC 脚本中引入了 OP_RETURN 指令,我们提到该方法为普通用户提供了一种将内容写入比特币网络的方式,他们希望永久保留。但是OP_RETURN的执行结果是无条件返回错误,交易返回错误,区块怎么可能包含呢?区块链如何接收这个区块?

思路一:特殊机制,脚本即使返回错误,仍然会写入区块链。 (其实没有)

思路二:即使返回失败,仍然写入区块链,但在具体处理时不计算。 (恶意节点抛出大量失败交易,如果攻击区块链怎么办?上篇文章提到,平均每秒只能处理7笔交易)

其实这里有个细节需要搞清楚

想想 OP_RETURN 写在哪里。 OP_RETURN其实是写在当前交易的输出脚本中,在验证交易合法性时,使用当前交易的输入脚本和上一笔交易(币源交易)的输出脚本进行验证。也就是说,在验证当前交易的有效性时,不会执行该语句。只有当有人想花钱时才会执行该语句。

对于BTC系统挖矿,矿工会“偷​​”出答案吗?例如:某矿工发现其他矿工发布了一个nonce,收到后验证该区块是否合法,将该nonce作为他找到的nonce发布。

实际上这是不可能的。发布的区块包含一个铸币交易,其收款人地址是挖到该矿场的矿工的地址。如果想盗取答案,需要修改收件地址。如果地址发生变化,铸币交易的内容也会发生变化,这将触发默克尔树的根。哈希值已更改。结果,原来的nonce是无效的。也就是说,不可能“窃取”答案。

交易手续费是交易者给他的交易上链的“小费”,那么你怎么知道哪个矿工可以挖呢?

不需要提前知道谁来挖矿,交易中总投入和总产出的差就是交易手续费。哪个矿工挖的矿可以在打包交易时收取这些交易费用作为自己的交易费用。

BTC 统计 BTC 匿名性

一般来说,匿名性与隐私保护更相关。但实际上,比特币中的匿名并不是真正的匿名,而是假匿名。事实上,比特币比纸币更匿名,因为它不标记个人信息。正是因为它的匿名性,很多非法交易都使用现金交易(你知道银行的风控系统吗?)。但是现金在储运等各方面都不方便。

实际上,比特币中的数据是完全公开的2010btc私钥地址,在线交易是与物理世界进行的,所以它的匿名性被极大地破坏了。如果银行允许使用假名(旧存折时代),由于银行数据不公开,银行系统的匿名性优于比特币。

BTC 系统中会发生什么会破坏其匿名性

用户可以生成多个地址账户,但这些地址账户可以关联

从表面上看,每笔交易都可以替换公私钥对,这样每次都是一个新账户,具有很强的匿名性。但实际上,这些帐户在某些情况下是可以关联的。

比如下图就是这样一个交易:

image-20210818105648237

在图中,您可以看到交易有 2 个输入和两个输出,因此 addr1 和 addr2 很可能是同一个人持有的账户,因为该人拥有两个私钥的地址。 (账户里的钱可能不够用)

在输出中,很可能有一个地址属于找零地址,也就是花完后剩下的钱。在某些情况下,也可以进行分析。

image-20210818105654385

如上图所示,对于这次交易,账户上的数字代表BTC,可以说明addr4明显是找零地址,而不是addr3(支付6比特币,单个账户不够用,所以用两个帐户)。

地址帐户也可能与现实世界中的个人身份相关联。

任何将 BTC 与现实世界联系起来的操作都可能泄露用户的真实身份,其中最明显的就是资金的转移。要获得 BTC,如果你用钱购买它,你就与物理世界互动。要将 BTC 转换为真实货币,还需要与物理世界进行交互。

在许多国家/地区,都有反洗钱法。如何防止不法分子利用比特币进行洗钱?其实很简单,只需要关注链上链外的资金流转即可。将大量资金转入比特币或将大量比特币兑换成真实货币,难以逃避司法金融机构的监管。

使用 BTC 支付时

比如有些商家接受BTC支付,比如BTC可以用来买咖啡、蛋糕等(这个场景信用卡已经很好解决了。使用BTC交易延迟高,交易成本高费用,这不是一个好主意。)

付款时会与个人账户建立连接,会导致个人信息泄露。

也就是说,BTC 不是很匿名。在实践中,许多人保持良好的匿名性。仍然是最好的一个是它的开发者中本聪,他参与 BTC 的时间最长,全世界都想知道他是谁。但实际上,中本聪的比特币并没有被花掉,这也让我们很难查出他是谁。

过去美国有一个丝绸之路网站,主要用于匿名支付,采用各种方法逃避监管(因为销售的都是违禁品)。但操作没几年就被查封了,其老板当时赚了很多比特币,纸面上也实现了一个小目标(一亿)。不过因为害怕被发现,这些钱他都不敢花,在美国依然过着很简单的生活(《以人民的名义》赵德涵:“我不敢花一个。”)。最后,据说他是因为在同一台电脑上登录真实社交账号和非法网站账号而被捕的(具体原因没有透露)。

技能路被关闭后,有人打开了技能路2,它在运营几年后就关闭了。

因此,可见的互联网并不是一个非法的地方。想做坏事,基本都能找到。

BTC的匿名性有多好,如何改善?

匿名的本质是不想透露你的身份。对于普通人来说,BTC的现有机制足以维护个人隐私。但是,如果涉及违法行为,行政机关其实很容易获得真实身份。

那么可以做些什么来最大化匿名性呢?

从应用层来说,不同用户的BTC可以混在一起,造成溯源混乱(混币);从网络层来说,可以采用多路径转发的方式,数据不是直接发送出去,而是要经过很多跳(洋葱路由的基本思想)。

实际上,用户隐私的泄露是由于区块链的开放性和不变性。不变性实际上对隐私保护是灾难性的。

零知识证明

零知识证明:一方(证明者)向另一方(验证者)证明某个陈述是真实的,但不透露该陈述真实的任何信息。

例如:A想向B证明一个账户属于A,也就是说A知道该账户的私钥。但是,无法通过A公开私钥来证明该账户确实属于A。因此,A可以生成账户签名,B用公钥验证签名。 (其实证明是否是零知识证明是有争议的,因为用私钥生成的签名被泄露了)

同态隐藏

image-20210818105703019

零知识证明的数学基础是同态隐藏。上图展示了同态隐藏的三个属性。

第一个性质意味着如果有E(X)=E(y),那么一定有x=y。 (无碰撞)

第二个属性表示加密函数是不可逆的。知道加密值,就无法推断出密码值。

第三个属性,也是最重要的,称为同态运算。说明对加密后的函数值进行一些代数运算,相当于直接对输入进行代数运算,然后进行加密。

例子:

image-20210818105710610

证明者是 Alice,验证者是 Bob。最简单的证明版本如下:

1.Alice 将 E(x), E(y) 发送给 Bob。 (属性2,不可逆)

2.Bob 根据收到的 E(x) 和 E(y) 计算 E(X+Y)。 (性质3,同态加法)

3.Bob验证E(x+y)和E(7)是否相等,如果相等,则验证通过,否则验证失败。(属性1,无冲突)

*缺陷*:Bob 可以暴力破解 x 和 y 的值。

盲签名

盲签名是一种特殊的盲签名,它以签名者看不到签名文件的具体内容而闻名。它有两个显着的特点:一是签名者对消息内容是不可见的;另一种是签名公开后,签名者无法追踪签名。

你为什么要这样做?

例如,在电子交易中,我们的交易信息依赖于银行等第三方机构。第三方机构需要防止双花攻击等需要对电子货币进行签名,在签名过程中难免会导致对交易内容的理解。如果希望银行等第三方机构负责相应的工作,但不知道交易的具体内容,可以使用盲签的方式。

例如,A 向 B 转账。

image-20210818105718843

既然我知道 BTC 提供了更好的匿名性,它不能完全解除关联,那么如果你想要这样的货币怎么办?这涉及零币和零纸币。

零币和零纸币 - 专为匿名设计的货币

image-20210818105725264

零币消费时,只需要使用零知识证明证明该消费币是系统中的合法币,而无需透露具体是使用了系统中的哪个币。这会破坏相关性。

当然,这类货币并不是主流的加密货币,因为它为匿名性的设计付出了一定的代价,而且,需要强匿名性的用户并不多。

Zerocoins 和 Zeronotes 在数学上是安全的。但是它们并不是100%匿名的,而且它们在与系统外的实体交互时也没有解决匿名性的破坏。

BTC 考虑哈希指针。

在 BTC 系统的很多地方都使用了哈希指针。指针保存的本地内存地址只在本地计算机上可用。这是有道理的,如果它发送到其他计算机,它是没有意义的。那么区块发布时,哈希指针是如何在网络中传播的呢?

所谓哈希指针,只是系统中的一种可视化方法。在实际应用中,只有哈希,没有指针。回顾前面提到的Block头数据结构:

image-20210818105733124

如图所示,就是上一个区块的哈希值。

因此可以看出,区块头中只有一个哈希值,没有指针。那么如何找到前一个区块的内容呢?

全节点一般将块存储在一个键值数据库中,键是哈希,值是块内容。常用的键值数据库是levelDB。只要掌握了最后一个区块的哈希值,就可以根据哈希值向前找到区块链的所有内容。

有些节点只存储部分区块链信息。如果您需要使用前一个区块,您可以向其他节点索取。哈希指针属性确保整个区块链内容不可篡改。

屏蔽“爱”

一对夫妇一起购买 BTC,从中截断私钥,并各自保留其中的一部分。如果以后两人关系还不错,可以拿出钱来;如果他们分手,这部分钱将被永久锁定,任何人都无法取出。这样做有什么问题?

那么 N 个人会怎么样?

这样,私钥就被分成了N份。但是会出现一系列问题。

一.如果N个人中的任何一个忘记​​了私钥,钱就不能取款了。

二.截断私钥的长度会降低安全性,因为私钥的长度会直接影响破解难度(2256远大于2128),和难度远不止【可见对于多个个人账户,应该使用多重签名,而不是截断私钥。】

三.如果你分手了,钱会变成死钱,会留在UTXO集合中,对矿工不友好。

分布式共识

如前所述,理论上,分布式系统是不可能达成共识的。

为什么比特币系统能够绕过分布式共识中那些不可能得出的结论?

严格来说,BTC没有真正意义上的公式,因为得到的共识随时可能被推翻,比如分叉攻击导致系统回滚。

此外,理论与实践也存在差异。不可能的结论是针对特定模型的。在实践中,可以通过稍微修改模型或添加离线方法来将不可能变为可能。

知识改变命运。这句话并没有错,但对知识稍加了解,可能会让你的命运变得更糟。从事科学研究是很有意义的,但不要把头脑局限在学术界的思考中。程序员的思维限制了想象力。

比特币的稀缺性

为什么要挖矿?因为有收益,收益大于支出。早期,BTC难度低,出块奖励高。从而吸引矿工。

如前所述,BTC的总量是固定的,有人认为这是一个精致的设计。但事实上,总量固定的东西并不适合货币,这就决定了BTC在未来无法彻底颠覆现有的货币体系。以太坊中的 BTC 没有定期减半的区块奖励。此外,一些新的货币将具有自己的通货膨胀功能。

是的,就个人而言,通货膨胀并不是一件好事,因为金钱一文不值。但是人类每年创造的价值,如果用固定数量的东西作为货币,只会越来越值钱,这会导致主人一直盯着它看。它的欣赏,其他没有它的人再怎么挣扎也跟不上(房市也是一样,有的人租房可以赚大钱,但个人很难买房难。这也是我国目前存在的一个大问题。财富分配不公最终会导致各种社会矛盾,需要政府来解决)。

量子计算

基于密码学的加密货币 BTC 会进入量子计算领域吗?计算后会不会变得不安全?

一. 量子计算距离被使用还有很长的路要走(人工智能也是如此,目前还处于弱人工智能阶段。其实很多技术都是这样的,情况投机是很严重的,但离实际还差得很远。但没有投机,就没有资金流入研究,这也是一个很矛盾的地方)。

二. 数量 如果真的用子计算来破坏现有的加密算法,对传统金融行业的破坏仍然是最大的。

三. 公钥并没有实际使用,但可以用公钥进行散列。哈希函数一般是不可逆的,所以即使是量子计算也无法反转私钥。

BTC使用的SHA-256,无论输入多大,最终结果都是256位,必然会导致信息丢失,无法反转原始数据。

总结:加密是可逆的,哈希是不可逆的;加密不丢失信息,散列破坏信息(加密和散列的区别)