1.转账交易如果接收者不在线,怎么办?

  单纯的转账交易不需要接收者在线,转账交易只不过需要在区块链上记录一下,把A账户上的比特币转到B的账户上,与接收者是否连在比特币网络中无关。

2.假设某个全节点收到了转账交易,有没有可能转账交易中接收者的收款地址是这个全节点以前从未听说过的?

  这是有可能的。比特币系统中,账户创建的时候是不需要通知其他人的,只需要在本地产生一个公私钥对就可以了。只有在以后,该账户产生的收款地址收到钱的时候,其他节点才会知道该账户的存在。

3.如果账户的私钥丢失了,该怎么办?

  其实是没有办法的,账户上的钱就变成了死钱,是没有办法取出来的。比特币系统是去中心化的系统,是没有人可以帮你重置密码的。

  有些加密货币是有交易所的,交易所是一个中心化的机构,一般来说,在交易所注册账户时,需要提供身份证。这种情况下,将比特币保存在交易所里,私钥实际上是由交易所保管的。登录交易所跟登录银行账户的操作类似,一般需要用户名、口令和二次验证消息(如Google身份验证器生成的一次性密码),在这种情况下,如果登录口令丢失,可以联系交易所,通过身份验证后重置密码。

  上述这种丢失口令的情况跟比特币系统中丢失私钥的情况是很不一样的。比特币系统中虽然也存在一些能够帮忙保管私钥的应用,如比特币钱包等。但是,并不能说明这些应用保管私钥会比私人保存更安全。历史上发生过很多次加密货币的交易所被黑的情况,黑客从里面偷到了大量加密货币。其中最著名的是Mr. Gox的例子,这个曾经是世界上最大的比特币交易所,交易量达到了全球比特币交易量的70%,后来被 黑客攻击,丢失了大量的比特币,这个交易所后来破产了,其CEO被判刑。而且这种情况并非个例,各种加密货币交易所出现问题的情况发生过很多次,也有监守自盗的情况,有的工作人员、管理层人员卷款跑路的情况也都发生过。相比之下,有些冷钱包或者说硬件钱包是比较安全的。
  私钥丢失之后,那么这些比特币将会永远花不出去,但矿工并不知道这个账户的私钥已经丢失了,这些比特币是取不出来的,所以他需要永远把交易的输出保存在UTXO中,这个操作对全节点是不友好的。

4.如果私钥泄露了,怎么办?

  尽快把这个账户上的钱转到其他安全账户上。因为区块链是去中心化的,所以没有人能够充当“银行”的角色帮你冻结账户或者重置密码。账户创建的时候会在本地创建一对公私钥对,私钥就是这个时候产生的,公私钥对一旦生成无法修改。可以生成新账户,但是原账户的私钥无法修改,账户的持有者也没办法阻止他人发布从该账户转账的交易,任何有私钥的人都可以发布转账交易,把账户里的比特币转走。

问:用户持有者如何知道自己的私钥泄露了,是否看见从该账户上转出的非本人发起的交易才能知道?

5.如果转账时写错了地址,该怎么办?

  转账时,本来需要把比特币转给A,结果写错了A的地址,错将比特币转入了B的账户。这时我们是没有办法取消已经发布的交易的,比特币系统中一旦交易发布到区块上就没办法取消了,在比特币系统中没有提供一些能取消已经发布交易的机制。如果转账转到错误的地址,若知道地址归属于某账户(如B)的话,可以跟对方联系,看对方是否愿意把比特币还给你,但是这种情况也只能与对方商量,这个没有办法强迫。如果不知道转入地址归属哪个账户,或者转入地址是一个不存在的地址,就没有办法了。(这里个人感觉效果类似充话费的时候输错的电话号码)

  地址一般是该账户公钥取哈希值得到的,但是有些地址其实并不是取公钥的哈希得到的,如Digital Commitment。如果想要把某项内容发布在区块上,证明在某个时间知道某个事情,这里有一种比较经典的方法就是Proof of Burn,就是将需要发布的内容的哈希值存放在OP_RETURN后面。但是有的人不这么做,他用哈希值生成一个像是比特币地址的东西,来代替比特币的转账交易接收方的地址的内容。就比如说正常实现转账交易A→B,这里B表示账户公钥取哈希值得到的地址,但是如果用其他哈希值来代替接收方的地址的内容,比特币系统并不知道这个地址是真的还是假的,这样转账的比特币就成了死钱,是取不出来的。这种虽然也达到了牺牲一点比特币,往比特币中写入一点东西的效果,类似于Proof of Burn,但是这种做法是很不提倡的,因为这样的交易的输出将会永远被写在UTXO集合中,全节点收到这样的转账交易,并不能判断这个交易的地址是否为真,不知道这个转账交易是花不出去的,这个操作对全节点是不友好的。

  在Proof of Burn的情况下,OP_RETURN后的结果是无条件返回错误,不满足合法区块才会被写入区块中的条件,那么为什么还会用这种方式来向区块链中写入内容呢?验证的时候是将这个交易的输入脚本与前一个交易的输出脚本拼在一起运行,顺利执行就是合法交易。而在Proof of Burn的情况下OP_RETURN是写在输出脚本中的,所以验证这个交易合法性的时候并不会执行到OP_RETURN,也就不会返回错误。如果后面再有一笔交易想要花这笔交易里的钱的时候,才需要验证这个交易的输出脚本。所以判断交易是否合法,能否写入区块的时候,并不会执行到OP_RETURN部分。

6.比特币挖矿的实质是在找合适的Nonce,看看哪个Nonce符合难度要求。那么会不会有矿工“偷答案”,如,他自己没有找到合适的Nonce,其他矿工发布Nonce,他看到区块之后,查了一下这个Nonce是符合要求的,他就将这个作为自己找到的Nonce发布出去。如何辨别是哪个矿工最前找到的这个Nonce?

  发布的区块里面有个CoinBase Transaction,里面有个收款人地址,是挖到矿的矿工的地址。如果要“偷答案”,需要将收款人的地址改为自己的地址,那么这个CoinBase Transaction的内容将会发生改变,这样会导致Merkel Tree的根哈希值会发生变化。Nonce在块头中,根哈希值也在块头中,Block Header的值发生变化之后,原来找到的Nonce就作废了。

问:如果要是挖到矿的矿工与偷答案的矿工同属于一个矿场呢?

7.交易费可以看作是发布一个交易的时候给矿工的一点小费,那么如何知道这个交易费给哪个矿工,如何事先知道哪个矿工会挖到矿?

  事先不需要知道哪个矿工会挖到矿。交易费的计算是total inputs - total outputs,即总输入与总输出的差值,哪个矿工先挖到矿了不需要事先知道,挖到矿的矿工可以将区块中所包含交易发输入与输出的差额收集起来,作为他自己的交易费。

北大肖臻老师《区块链技术与应用》系列课程学习笔记[8]BTC课堂问答相关推荐

  1. 北京大学肖臻老师《区块链技术与应用》公开课笔记8——BTC挖矿篇

    北京大学肖臻老师<区块链技术与应用>公开课笔记 比特币挖矿篇,对应肖老师视频:click here 全系列笔记请见:全系列笔记请见:click here About Me:点击进入我的Pe ...

  2. 北京大学肖臻老师《区块链技术与应用》公开课笔记13——BTC匿名性篇2(零知识证明)

    北京大学肖臻老师<区块链技术与应用>公开课笔记 比特币回顾问答篇,对应肖老师视频:click here 全系列笔记请见:click here About Me:点击进入我的Personal ...

  3. 肖臻老师区块链公开课笔记

    前段时间,区块链大火,出现了很多种基于区块链技术的政务应用.之前通过零散的网页信息和讲座,自我感觉理解了block chain原理,当看到各种区块链技术广泛应用时,自己以技术理解,反而对之不屑.当然, ...

  4. 北大肖臻老师《区块链技术与应用》系列课程学习笔记[10]BTC思考

    1.BTC在设计的过程中很多地方用到了哈希指针,如块头就包含指向前一个区块的哈希指针,指针保存的是本地内存的地址,只在这台计算机上才有意义,发送到其他计算机上就没有意义了,那么在发布区块的时候哈希指针 ...

  5. 北大肖臻老师《区块链技术与应用》系列课程学习笔记[3]BTC的具体实现

    目录 一.UTXO 二.区块链中的例子 1.Block #529709 (2)Block header (3)交易信息 2.普通转账交易 3.概率分析 4. 公平性保证 5.比特币区块总量 6.安全性 ...

  6. 北大肖甄《区块链技术与应用》

    知识点总结二 1.Uncle block: 如上图所示,其中的叔父区块是block 7.他的叔父区块就是block 4 同一级别的block 5和block 6.最长合法连上面的区块招安叔父区块,可以 ...

  7. 《区块链技术与应用》北大肖臻老师——课程笔记【21-23】

    <区块链技术与应用>北大肖臻老师--课程笔记[21-23] 一.权益证明 二.ETH-TheDAO 提示:以下内容只是个人在学习过程中记录的笔记,图片均是肖老师课程的截图,可供参考.如有错 ...

  8. 《区块链技术与应用》北大肖臻老师——课程笔记【4-5】

    <区块链技术与应用>北大肖臻老师--课程笔记[4-5] 一.比特币协议 比特币脚本(BitCoin Script) Paxos协议 比特币 中的共识协议 (consensus in Bit ...

  9. 《区块链技术与应用》北大肖臻老师——课程笔记【6-8】

    <区块链技术与应用>北大肖臻老师--课程笔记[6-8] 一.BTC网络 二.BTC-挖矿难度 三.BTC-挖矿 提示:以下内容只是个人在学习过程中记录的笔记,图片均是肖老师课程的截图,可供 ...

最新文章

  1. 锐捷交换机配置snmp版本_snmp交换机配置
  2. 雷军做程序员时写的博客,太牛了!
  3. CodeForces - 1370F2 The Hidden Pair (Hard Version)(交互题+二分)
  4. 微信小程序 - 五星评分(含半分)
  5. 终极JPA查询和技巧列表–第1部分
  6. 1至9填入九个方框内_防水涂料和施工堵漏的“五大技巧”和“九个细节”
  7. JavaScript 中的相等检测
  8. 关于Lua打包cocos2d项目
  9. 除了下拉框/下拉联想词优化推广,还可以做那些网络推广?
  10. 判断连个单链表是否交叉,并找到交叉点
  11. Git(6):使用git命令将本地项目提交至远程仓库
  12. 数据库系统概论学习总结
  13. GATK RNA-Seq Snps Indel 分析
  14. 在LabWindows/CVI中程控的调整表格控件的属性
  15. 启动计算机按住del不放,电脑黑屏bios界面都进不去怎么办
  16. IP数据报首部的格式identification
  17. 房贷没放款前千万不要做的事
  18. opengl生成图片php,(转)使用OpenGL显示图像(七)Android OpenGLES2.0——纹理贴图之显示图片...
  19. java ipmi 获取服务器硬件信息(温度,风扇转速,内存数,硬盘数等等)
  20. 2020.11.18第十三章 事件(事件处理程序;事件对象;事件类型:UI事件;焦点事件;鼠标与键盘事件 变动事件 模拟事件)

热门文章

  1. 基于cocoCreator版本2.4.5整理一款2D小游戏快速开发的游戏框架
  2. 学习Lucene、solr之前应当了解的一些术语
  3. 七夕python小礼物
  4. SAP-MM-预留、寄售、外协(个人笔记)
  5. C++ make_shared() shared_ptr()用法(七)
  6. 白盒测试(程序流程图)
  7. layui radio标签禁用和取消禁用
  8. 关于Redis数据的有效期
  9. docker 可视化管理工具 shipyard 简介
  10. JavaWeb - JSON、Protobuf、Thrift、MessagePack 对比和开发指南