一致性问题和共识算法

原创 2018-05-24 10:50 阅读(139)次
随着单机(单服务器),分布式已经是现在的主流。但分布式一定会遇到一致性问题。 所谓一致性就是分布式环境中的各个节点在一段操作后,使得他们对处理结果都保持一定程度的一致。这里的一致性分为不同级别,但总之只有满足一致性,对外才能呈现为一个功能正常的,且性能和稳定性都要好很多的“虚处理节点”。 对于访问分布式系统的用户来说,他一般是无法选择具体访问某个节点,当然他也不应该关心需要访问哪个节点,他看到的一个服务,而这个服务具体背后的结构对用户是透明的。所以如果分布式系统没有一致性,用户多次访问被分配到不同的节点,得到了不同的响应,怕是没人敢用这个服务了吧,比如售票服务。 注意:一致性并不代表结果正确与...

CAP 的理解

原创 2018-05-22 18:23 阅读(169)次
brewer在2000年提出了CAP定理。这是关于如何构建高伸缩性系统(highly scalable system)时所做出的各种折衷方案的讨论。 我从我的理解角度去解释这个事情: 首先,最早的软件服务都是在同一台(只有一台)服务器上运营,包括服务和数据,这可能在十几年前还是常见的。但随着业务发展,越来越多的请求集中到了这台服务器上,服务器性能总是有瓶颈,而且单机存储已经被证明数据是不安全的。这时候人们只能用分布式的方式来扩展这个服务。 人们开始把程序和数据分开到不同的服务器上,就减少了单台服务器宕机带来的影响,也就是提高了可用性Availability。可用性可以无限接近100%,但无法达...
CAP

Base58,Base58check

原创 2018-04-06 17:01 阅读(257)次
Base58是跟Base64基本一致的编码方式,区别是去除了Base64中6个容易产生歧义的字符。所以64-6=58。故名Base58。 这6个字符是数字"0",字母大写"O",字母大写"I",和字母小写"l",以及"+"和"/"符号。 比特币癿Base58字母表:123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz Base64的编码见这里 : Base64 比特币私钥最原始的格式是256位的二进制,...

Base64

原创 2018-04-05 18:54 阅读(122)次
本文参考了:http://blog.xiayf.cn/2016/01/24/base64-encoding/    此文写得很清楚 Base64算法是一种编码方式。 为什么叫base64,因为他使用64个字符来对任意数据进行编码,同理有Base32、Base16编码,当然还有Base58这个比特币用的编码。 这64个字符是各种字符编码(比如ASCII编码)所使用字符的子集,并且可打印。你可以认为这是64个各种编码中通用的字符。 不过由于最后两个字符(即62,63数字对应的字符)"+","/"是 会被url直接转义的符号,因此如果希望通...

比特币-加密,私钥,公钥,地址

原创 2018-04-04 17:24 阅读(134)次
比特币的安全主线是通过私钥生成公钥,公钥生成地址。由于这些过程大量使用了hash算法,所以无法反推出私钥,来保证比特币不会被盗取。 先说私钥生成 私钥其实一组随机数,256位的二进制数,必须妥善保存。如果丢了或者给别人,那上面的比特币就丢失或者被别人支配了。这个256位的2进制的生成其实就是在1到2的256次方个数字(其实是略少于这个范围,有一些被排除了,因个数量已经超过了宇宙中原子的总数,想要遍历所有的私钥,耗尽整个太阳的能量也是不可能的)中选一个数字出来。这个数字的选取无法预测。不要用程序提供的简易随机数生成器来生成这个随机数,必须是密码学安全的伪随机数生成器。 不要自己写代码或者用开发语...

区块链的应用-电商

原创 2018-03-27 16:51 阅读(113)次
现在,电子商务意味着使用中心化的服务。eBay、亚马逊和其它大公司对卖家实施严格监管,而且收取不菲的费用。这些公司只接受像信用卡和PayPal这样的对卖家和买家都收取手续费的支付方式。他们需要用户的个人信息,这些信息可能被盗取或者卖给其他人,用于精准投放广告或者危害更大的滥用。因为电子商务公司和政府审查所有的交易商品和服务,所以买家和卖家不能总是自由地进行交易。 传统情况下,电商平台起到了中介的作用,一旦发生纠纷,会作为第三方机构进行审判。这种模式存在着周期长、缺乏公证、成本高等缺点。 但出现了OpenBazaar(公开市场)是为网上点对点(P2P)交易创建的去中心化网络的开源项目。 Open...

区块链的应用-供应链

原创 2018-03-27 02:12 阅读(114)次
每样我们可以购买的东西背后都有一个故事:人,材料,地点的变化过程。但是这些都往往是顾客不知道的,他们被隐藏在了营销之后,展现给消费者的少之又少。 开源的分散式数据库---区块链可以让消费者检查产品的真实性和道德标准。 现在,越来越多的消费者要求在产品的制造地点和方式方面拥有真正的透明度。 最近欧盟的监管要求企业发布更多有关其供应链的信息,并采取措施确保对不符合规定的人给予适当的惩罚。 但即使消费者认知度和新监管水平提高,确保产品监管链的真实性和透明度也很困难。 区块链的特点带来了供应链上的更大的透明度。 第三方的监管对于供应链并不能解决所有问题,如果是供应链参与者,反而带来的偏见或者弱点,会出...

Merkle Signature Scheme(merkle树)

原创 2018-03-26 11:39 阅读(199)次
merkle树是是一种哈希二叉树,它是一种用作快速归纳和校验大规模数据完整性的数据结构。 Merkle Signature Scheme 是hash密码学中基于merkle树和一次性签名(one-time signatures ,如Lamport signature)的的数字签名方案。 70年代开发,是数字签名算法或者RSA的替代品。 主要的特点是可以抵抗量子计算算法。 传统的公钥算法,如RSA和EIGamal 因为量子计算机(quantum computer)的出现而变得不安全(由于shor's 算法)。 而Merkle Signature Scheme 只依赖于hash...

Preimage Attack

原创 2018-03-26 00:13 阅读(174)次
在密码学中,Preimage Attack是针对密码散列函数(hash function)的试图找到具有特定散列值的消息。 密码散列函数应该抵抗对其原像的攻击。 根据维基百科的解释,针对Preimage Attack的“防御”分为两种: 1. preimage resistance : 给了output,计算上不可能反推出input 2. second-preimage resistance: 指定input,没有另外一个input2会产生同样的output 。 可以看出 Preimage Attack共两种,而Second Preimage Attack 是一种碰撞攻击(col...

Lamport signature

原创 2018-03-25 13:24 阅读(144)次
lamport signature 是一种数字签名方法。使用单向的安全加密函数来构建,一般用hash函数。 目前基于large hash function 的lamport signature是安全的。 但缺点是lamport signature只能签署单个消息。但可以通过结合hash trees就可以用于多个消息。目前他是相当有效的一种数字签名方案。 leslie发明于1979年。 这里参考了维基百科。 他的原理: 首先创建lamport key pair(秘钥对)。使用随机数生成器生成256对随机数(256对就是512个)。每个随机数字的大小是256位,所以总共是512*256 bits&...