merkle(merklen唇膏多少钱)


美库尔公司的介绍


                

植根于数据,专注于绩效


美库尔是全球领先的以数据为驱动、以技术为依托的绩效营销服务商,专注于打造跨平台和设备的、独特的个性化客户体验。自成立30多年来,美库尔与财富1000强公司及领先的非营利组织合作,最大化提高其客户价值。美库尔植根于数据、技术、和分析,形成了独特的能力,为理解消费者洞察奠定了基础,驱动实现
“人本营销” 的策略。美库尔在绩效媒体、客户体验、客户关系管理、忠诚度和企业营销技术方面具有综合优势,帮助客户提升营销业绩,增强竞争优势。


美库尔全球现拥有超过5500名员工,总部位于马里兰州哥伦比亚市,在美国设有24个办事处,在欧洲、中东和非洲地区以及亚太地区设有25个办事处。美库尔于2016年加入了电通安吉斯集团。


美库尔的服务


美库尔帮助客户实现“人本营销”的转型,我们的服务涵盖多个领域,包括:顾客策略、绩效媒体、顾客体验和个性化、顾客关系管理、忠诚度营销和企业营销技术服务。致力于帮助品牌打造独一无二的个性化体验,增进客户互动,提升顾客忠诚度。


Merkle-Hellman背包算法的简介


                

其工作原理是:假定甲想加密,则先产生一个较易求解的背包问题,并用它的解作为专用密钥;然后从这个问题出发,生成另一个难解的背包问题,并作为公共密钥。如果乙想向甲发送报文,乙就可以使用难解的背包问题对报文进行加密,由于这个问题十分难解,所以一般没有人能够破译密文;甲收到密文后,可以使用易解的专用密钥解密。
但是,在它发表几年后,就找到了攻破它的方法。即使如此,它仍然代表着一类很难问题的算法。


什么是梅克尔树(Merkle)


                
首先,它可不是一棵梅花树,虽然名字有点像,但是此树非彼树。梅克尔树是区块头中的三巨头之一,我们要知道,区块是区块链的基本结构单元,是有包含元数据的 区块头 和包含交易数据的 区块主体 构成。而我们这棵梅花树呢,就是区块头中的一大成员。
  
可能你们会好奇,区块头是什么,莫非是变异的头部吗?其实很简单,顾名思义,区块头就是一个区块的前部分,相当于人类身体的头部,控制人类躯体的关键部位。区块头由三组元数据组成,一是父区哈希值;二是挖矿难度,Nonce,时间戳;三是梅克尔树根,也就是我们今天的主角,别小瞧这棵树,它能快速归纳校验区块中所有的交易数据,是不是超级优秀~
  
区块链利用梅克尔树的数据结构存放所有叶子节点的值,并以此为基础生成一个统一的哈希值。梅克尔树的叶子节点存储的是数据信息的哈希值,非叶子的节点存储的是对其下面所有叶子节点的组合进行哈希计算后得出的哈希值。
  
还有一点需要重视,就像重视我们的高考成绩一样,那就是,区块中任意一个数据的变更都会导致梅克尔树结构发生变化,在交易信息验证对比的过程中,梅克尔树结构能够大大减少数据的计算量,毕竟,我们只需验证梅克尔树结构生成的统一哈希值就可以啦。
  
  一粒沙里看出一个世界,一朵野花里一座天堂,把无限放在你的手掌上,永恒在一刹那里收藏。 用布莱克这句话解释梅克尔树再合适不过了。

什么是默克尔树?


                
默克尔树(Merkle tree)是一种哈希二叉树,1979年由Ralph Merkle发明,将数据存储在树状结构的叶子节点中,并通过对数据的逐级哈希(Hash)操作确保数据的不可篡改性。叶子节点数据的任何变动,都会传递到上一级节点并最终反应到树根的变化。比特币区块里面的每一笔交易就是通过默克尔树结构进行存储的。

认识MMR(Merkle Mountain Range)


                
merkle tree一种二叉树也是区块链中一种常见的数据结构,其特性就是树的根及中间节点主要是由其左右子树的Hash构成。Parent = H(0,1),其以密码学保证其安全性,以相同顺序插入才能计算出最终一致的树根。
                                          
而mmr(Merkle Mountain Range)是Peter Todd提出的一种Merkle tree,长相类似一组连续的山峰组成,其被设计为节点插入后就不能被修改,支持动态插入。
                                          
对于普通Merkle树对于每个新加入节点都需要重新计算merkle root,如果节点数量很大的话这个计算量会非常巨大,而mmr支持动态加入新节点并计算root。

由上图可以发现,以存储索引位置作为其坐标的二叉树,都有左子树与父节点的距离(offset)为 offset=2^Height ,兄弟节点之间的距离为 offset=2^Height - 1 ,这样就可以计算出任意节点的兄弟节点与父节点的坐标。
  
另外如果我们能够计算出任意节点的高度,我们就能计算出任意节点的父节点及兄弟节点的坐标了,将节点坐标从 1 开始并以 二进制 来表示。如图:

现在我们可以顺序追加节点了,我们只需要判断下一个节点的高度,如果大于当前高度则需要合并左右子树,方法如下:
  
由图2可以知道,MMR可能会有多个 山峰 ,而MMR的root是由最右侧的山峰依次向左合并,直到最后形成root,这个操作也被称为山峰的 拱起 操作。图2中的 root=Hash(Hash(18,17),14) 。
  
MMR的root是由山峰的 拱起 得到,那么最左侧的山峰一定一个完全的二叉树,节点数量为 2^Height - 1 ,由此我们可以在固定节点数量下(Count)不断尝试左侧山峰的高度,找到 2^Height - 1   
在计算出左侧山峰后,可以以此为坐标,依次计算出右侧的所有山峰,如下:
  
获取到所有山峰后,就可以对所有山峰,由左到右依次 拱起 ,最后得到MMR的root。如下:
  
构造叶子节点的 merkle proof,分三个步骤:
  
如下:
  
proof的验证,以相同的顺序重新计算Merkle Root就可以,如下:
  
MMR可以极大的减少merkle证明的数据量,可以大幅度的减轻存储和网络的负担,提升验证效率,目前Open timestamp 和 Grin 等项目及Fly client的论文中都使用了MMR的证明。

目录[+]