给兄弟讲bitCoins和blockchain
时间:2022-07-23
本文章向大家介绍给兄弟讲bitCoins和blockchain,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
起源:
- 比特币的创建者中本聪不满当时西方的货币政策。在他看来 , 西方国家中央银行对商业银行的保护以及其货币的过度增发是导致当时的金融危机的主要原因。
exaple:
- 开始人们用物品换物品,但是由于在交换的过程中,出现了携带不方便,难以换算等问题?
- 为解决这个问题人们还是想到了说是使用金子,容易保存且比较稀有,相对于以前方便携带,于是人们开始了实物货币时代。但是又遇到问题了,金子资源不够了,也会有磨损。
- 又有人提出了使用纸币,将所有金子都上缴等价换纸币,纸币只能由固定的地方(政府银行)印出来才有效,拥有固定的标号和签字等。当有损坏的时候可以拿着纸币去银行换取新的那么旧的纸币就销毁掉。
- 虽然在使用纸币的时候没有怎么遇到非常致命的问题,但是造币太累了,还有就是有人制造假币等等问题 于是又有人提出,我们为什么不去搞一个账本,所有的交易记录都放在账本上,把每个人目前所拥有的纸币都交上来,然后在数据库里面维护账户的信息。但是这个玩意还是有问题,就是如果这个数据库管理员有私心把这个账簿改掉了,那怎么办。
- 于是有一个天才科学家“中本聪”来了,他说:我们不要具体记录某个人算好的账,如剩余多少钱,而是去记录所有的交易,那么每个人有多少钱就可以通过交易记录推算出来。并且这个交易记录账本交给大家来维护。于是来了这个去中心化的记账系统,也叫做A Peer-to-Peer Electronic Cash System(一个点对点电子现金系统)。
什么是blockchain,什么是Bitcoins?两着又有什么关系呢?
类比一下吧,支付宝中的金额数就是BTC,其保证金额正常转账正常交易的系统就是区块链,我现在就是类比一下,但是支付宝和这玩意完全是两会事!!!!再强调一下,我的意思是blochain是技术,bitCoins是一个服务。使用blockchain实现了bitCoins!!! 但是我个人觉得这玩意更像是一个有一定算法的数据结构。咋先入门不BB那么深了!!
技术是用来干什么的,就是用来解决问题的吗!(也可以这么说吧,技术就是因为问题而产生的)那bitcoins都遇到了那些问题?而发明除了区块链这门技术?
- 为什么要发明bitcoins系统呢?正如我上面的example,诚信吗,被一个人控制。这玩意容易被修改掉, 如果说让所有的人都去维护账簿那岂不是妙哉!还有就是 bitcoins 系统是一个 transaction-based ledger 也就是说它是基于账单记录的一个交易账簿。 所以说所有人都必须知道这个账簿的所有交易记录才能去做帐,才能计算出来自己的btc余额,那么这就来问题了!那既然账簿都公布出去了,那这玩意岂不是完犊子了,张三说我出去“玩”的花费岂不是被老婆知道了!!这不就GG了,聪哥说这简单啊!说他也想到了!他也有老婆啊!这就牵扯到了密码学中的Asymmetric encryption(非对称加密)和 hash 算法 。使用BTC系统的人在创建账户的时候会有两个key ,public key(公匙) 和 private key(私匙)public key也就是类似与我们的账号,private key 也就是类似于我们的密码。 这样的话那这谁也不知道这个是谁啊 ,还有人就会问那他老婆钥匙知道他的public key 那也不就知道他是谁了!!!! hash的算法可不是吃素的,这个public key 和 private key 是通过hash 算法计算出来的 其中bitcoins 系统中使用的算法就是sha256 , 比如你是jingyangchun 通过hash算法后直接变成256个由0和1组合打二进制代码。但是有人就说他老婆反算回来不就行了!! 好吧 这个算法是反算不回来的。现在被老婆发现这个问题解决了,那会不会有创建的private key 和 public key 和其他人是一样的呢? 这个算法的好处就是 colloction free 意思就是没有人能制造出hash 碰撞,hash碰撞的意思是 就是jingyangchun 在通过hash 计算后在人为的情况下是制造不出来相同的hash值的。所以说你是唯一的(这个的前提条件是:你的输入空间是足够大的,意思就是你这个jingyangchun简简单单的字符串是不行的,得再加 个字符串才可以的jingyangchun+weqhsvsdkhvsdkhdvhksvhk )所以说账户的安全问题得到保证了!看下图!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 谷歌开源NLP模型可视化工具LIT,模型训练不再「黑箱」
- Python 装饰器填坑指南 | 最常见的报错信息、原因和解决方案
- 社区开源框架预制件相关模块:CollectManager详解
- Kettle构建Hadoop ETL实践(三):Kettle对Hadoop的支持
- 3种 Springboot 全局时间格式化方式,别再写重复代码了
- 一文搞懂CDN加速原理
- 3分钟短文:Laravel Carbon自定义日期时间格式
- (30)字符截取命令sed
- 2. Bean Validation声明式校验方法的参数、返回值
- 如何识别和阻止基于电报的僵尸网络
- 由String,String Builder,String Buffer 引起的面试惨案
- MySQL案例:各类临时文件的存放位置
- 关于加@Transactional注解的方法之间调用,事务是否生效的问题
- 基于Vue实现一个有点意思的拼拼乐小游戏
- 硬核手写字节码实现HelloWorld