主页 > 安卓版imtoken钱包打 > 一文看懂:去中心化交易如何安全可靠?

一文看懂:去中心化交易如何安全可靠?

安卓版imtoken钱包打 2023-04-20 08:01:30

比特币 币币交易_火币网还能交易比特币吗_比特币怎么交易最安全

我们有必要先了解为什么比特币交易中会有公钥和私钥。

现实生活中,张三用手机给李四转了10块钱。 他通过网银APP输入密码,经银行验证后,交易才生效。 银行在验证过程中做了两件事:一是验证发起交易的人是否为张三(通过张三输入的密码验证),二是验证发起交易的金额是否为张三张三的金额足够从他的账户中扣除(检查张三的账户余额是否大于交易金额)。

这种现实生活中的交易方式是基于用户对银行的信任,相信银行不会窃取用户的财产。 银行统一保管用户的账户密码,以便用户发起交易时,将输入的密码与银行保存的密码进行比对验证。

在无监督的比特币网络中,没有一个集中可靠的组织来帮助用户存储账户密码。 相反,世界各地的矿工帮助验证交易的合法性。 那么,“矿工保存用户账号密码,用户输入密码供矿工验证”的说法是不成立的,因为没有用户愿意让一个不靠谱、陌生的矿工保存自己的账号和密码。 拿走所有用户的币。 因此,现实中“银行保存账户密码和财产-用户输入密码验证”的关系是不成立的。

为了找到解决方案,我们需要知道我们想要什么。 我们依次看看银行在用户与用户之间的交易中扮演的角色:

1.验证发起交易的人是账户所有者。 (用户输入密码验证)

2.验证源账户余额是否大于交易金额。 (用户账户余额对比)

由于比特币交易机制是由全球矿工验证的,我们脱离了实际的信任关系,希望有某种形式可以让矿工完成以上两件事,那么我们就认为交易的验证已经完成:

1.验证发起交易的人是比特币持有者。

2.验证持有人的余额是否大于交易金额。

首先我们需要了解的是,矿工并没有停止保存用户的账户密码,只是保存了用户的账号,知道用户有多少币,但是没有提币密码。

接下来,我们需要想办法验证发起交易的人是否是比特币持有者。

我们首先想出了方案一(未加密版本):

假设张三转10个比特币给李四,那么张三写一句:“张三转10个比特币给李四”发送。 矿工收到这句话的时候,没法验证是不是张三发起的,因为李四也可以写出一模一样的句子,假装张三给自己发币。 所以这个解决方案是不安全的。

可行性指数:☆☆

安全指数:☆

优点:简单

缺点:资产容易被他人挪用

于是就有了第二种方案(个性签名版):

张三在给李四转10个比特币的时候,用自己的亲笔签名签上了自己的名字:

比特币 币币交易_比特币怎么交易最安全_火币网还能交易比特币吗

然后发给矿工。 当矿工收到“张三转10个比特币给李四”时,也收到了上图。 这时候矿工相信是张三发起的,但是他也有点怀疑:如果李四能模仿张三的签名,那就难保是张三发起的。 所以这个解决方案是不安全的。

可行性指数:☆☆

安全指数:☆☆

优势:签名专属

缺点:签名容易被别人模仿

于是想到了第三种方案(发送明文密码版):

由于矿工已经为每个用户建立了一个账户,所以当张三给李四转10个比特币的时候比特币怎么交易最安全,张三也将自己的密码发给了矿工,让矿工通过密码来验证这个账户是不是张三。 其中三个。 这样一来,矿工们很开心,张三的资金却有风险。 作恶矿工拿到张三的密码后,会直接将张三的币提走,造成财产损失。

可行性指数:☆☆☆

安全指数:☆☆

优点:密码认证

缺点:密码容易被盗,造成资产风险

于是想到了第四个方案(加解密内容版本一致):

既然直接给张三密码有风险,为什么不直接给密码加个加密呢? 假设张三的密码为:12341234,假设比特币机制设置了密码加密规则:在发送密码前,在密码中统一加上11111111比特币怎么交易最安全,则张三加密后的密码为:23452345。当矿工拿到加密后的密码时,他将加密后的密码减去11111111,最后得到12341234。验证确实是张三发起的,但是这就遇到了方案二的问题,即矿工可以获取到用户的密码。

而且,这个方案还有一个问题:

交易结束后,李四也可以获得张三的加密密码(因为张三将交易信息和加密密码全网广播),然后李四又私下创建了另一笔“转张三给李四10比特币”的交易,伪装成张三,将张三之前加密过的密码和新的交易信息再次发给矿工,矿工收到后,按照现在的规则,发现这笔交易是真实的,所以这笔交易通过了验证,没有张三的知情,导致了张三财产的损失。

可行性指数:☆☆☆

安全指数:☆☆

优点:密码加密

缺点:矿工很容易破解原密码并窃取; 他们无法验证交易是否由发起人发起。

那么,如何在不暴露张三密码原文的情况下,避免上述“其他人创建的新交易也可以被验证”呢?

于是就有了解决方法五(加密不泄露密码版本):

由于方案4的加密过程不变,即无论张三与他人发生多少笔交易,加密结果都是一样的。 另一方面,其他人很容易复制现有的交易记录。 从这两个角度来思考,我们有以下三点需要思考:

1、如何让每次加密的结果都不一样?

2、原密码如何解开?

3、如何让每笔交易记录尽可能不同?

这导致选项五的规则升级版本:

1.以发起交易的持币人账户余额作为交易发起方,而不仅仅是账户。

2. 发起方使用自己的密码对交易进行双哈希加密,生成加密信息。

3、采用全新的解密机制,对用户密码进行双重哈希加密,生成解密工具。 解密工具无法解密加密信息的原始密码。 解密工具和加密​​信息一起使用,通过公式计算结果。 如果结果为真,则交易是真实的。

加密使用散列算法。 我们之前了解到,哈希算法是一种加密算法。 SHA256算法被用作比特币世界的哈希算法,因为这已经被证明是安全的。 在本次连载中,我们简化了SHA256的拼写,简化为Hash,读作hash。 同样的内容加密后,结果是一样的。 不同的内容加密后,结果是完全不同的。

原来的机制是使用交易发起人的账户发起交易,比如“账户A发送10个币给账户B”。 那么如果作恶者要复制交易,交易信息完全一样,A账户发送10个币给B账户。为了避免这种情况,采用了余额发起系统,即余额信息” A账户剩余20个币,发送10个币到交易信息中的“B账户”。 这确保了即使有人复制了交易,实际包含的信息也会有所不同。 因为张三给李四转10个币的时候,他的账户余额是10个币。 如果李四要复制交易,那么交易信息就是“A账户还剩10个币,发送10个币到B账户”,交易信息发生了变化,和原来的信息不一样了。 这就保证了即使有人复制了交易信息,也不会完全一致。

在“复制的交易信息不完全一致”的前提下,增加“发起人用自己的密码加密本次交易”的规则。

交易使用哈希算法加密。 不同的信息交易得到的加密结果是完全不同的。

因此,该方案的结果是,当作恶的李四复制了一笔新的与上一笔交易相同的交易信息并想要加密时,他无法加密出与张三加密后的结果相同的结果。

这个解决方案有一个小问题:

1、李四使用自己的密码对交易进行加密,并使用自己的密码生成解密工具。 会通过验证吗? 此时,虽然已经核实交易有发起人,发起人的密码也没有泄露,但矿工们仍然不知道这笔交易是不是张三发起的。

2、如果张三给自己充值了10个币,张三的余额又是20个,交易记录不就和之前的交易记录一样了吗?

可行性指数:☆☆☆

安全指数:☆☆☆

优点:用户密码有保障

缺点:仍然不确定发起人是否是账户持有人

于是就有了方案六(即将推出完整版):

方案6增加了验证加密者是否为账户所有者的机制:

对解密工具进行加密,将加密后的结果作为用户的比特币账户,用户将一直以此结果作为比特币账户与他人进行转账。 所有加密规则均采用散列加密,加密算法全世界任何人都可以使用。

因此,当矿工收到加密信息和解密工具后,就使用解密工具尝试解开加密信息。 如果能解开,就说明加密确实是针对这笔交易的,也说明解密工具确实是张三的。 解开的结果是“从A账户转10个比特币到B账户”。 另一方面,使用普通的哈希算法对解密工具进行加密,将加密后的结果与交易发起方进行比较:刚刚解锁结果中的“A账户”。 如果发现完全一样,则说明这个账号确实是这个密码的主人。

事实上,选项五最后遗留的问题仍然没有解决:

如果张三给自己充值了10个币,张三的余额又是20个,交易记录不就和之前的交易记录一样了吗? 如果交易记录相同,就可以冒充张三进行交易。

可行性指数:☆☆☆

安全指数:☆☆☆

优点:可以验证交易是否由交易的所有者发起

缺点:可以复制相同的交易记录,稍不安全

于是,就有了计划七(最终完整版):

对于这个问题,建议用户在每次交易后丢弃原账户,使用新账户存储比特币。 这样即使余额相同,账户也完全不同,所以交易记录也完全不同。 那么不能复制完全相同的交易。 这也是安全的。

至此,比特币交易终于有了安全可靠的保障。

可行性指数:☆☆☆☆☆

安全指数:☆☆☆☆☆

优点:不给坏人复制相同交易记录的机会

缺点:无

让我们整理一下:

用户对密码进行加密,得到解密工具。 然后加密解密工具得到账号。 用户向所有人公开他们的账户并与他们进行交易。

用户用完一个账户发币后,将剩余的比特币转入新账户,并丢弃原账户。

用户用密码对一笔交易进行加密,得到加密后的结果。 加密结果和解密工具发送给世界各地的矿工。 矿工收到加密结果、解密工具和交易信息,代入公式进行计算。 如果结果为真,则验证成功。

我们把密码称为私钥,解密工具称为公钥,账号称为地址,通过哈希算法加密,加密后的结果称为私钥签名。