以太坊、加密算法、私有链知识学习

区块链的六层模型

区块链技术的模型是由自下而上的数据层、网络层、共识层、激励层、合约层和应用层组成。

数据层:是区块链模型的最底层,他封装了数据区块的链式结构,以及非对称的公匙私匙加密技术和时间戳技术。

网络层:点对点(P2P)的组网机制,数据传播和数据验证机制,因为P2P的特性,区块链具有自动组网的机制,常常被称作分布式自治系统(DAOs)。

共识层:主要负责共识算法和共识机制,目前最常见也是较为成熟的有三种共识机制——工作量机制证明POW(Proof of Work)、权益证明机制POS(Proof of Stake)、股份授权证明机制DPOS(Delegate Proof of Stake)。这三种机制各有利弊,目前还在不断演进和完善过程之中。

激励层:主要负责激励的发行制度和分配制度。可以简单的理解为就是一套工资和奖励系统。了解过比特币挖矿原理就很好理解,所谓的挖矿就是在新区块记账所得的奖励+交易手续费,奖励+手续费如何分配就是激励层的功能。

合约层:因为区块链每个区块可编程、可嵌入代码的特性,合约层包含了脚本、算法、以及智能合约,可以简单的理解为是一份自定义的电子合同,之所以称为智能合约,是因为这份合约可以在达到约束条件自动触发执行,不需人工干预,也可以在不满足条件时自动解约,理论上可以触发执行事先约定好的一切条款。这也是区块链能够解放信用体系最核心的技术之一。

应用层:和传统的OSI网络协议模型应用层一样,封装了各种应用场景和案例,类似于我们日常用的各种网站、APP,比如有社交娱乐,有电商购物,有新闻阅读等各种不同的应用场景。

以太坊和智能合约

        以太坊相当于ios或安卓,让区块链应用编写的门槛大大降低

        以太坊最大的特色就是能执行智能合约,这里的智能是灵活的意思,而不是人工智能。智能合约是以数字形式定义的一系列承诺,合约执行方可以在上面执行这些承诺的协议,类似现实世界中的合同。智能合约一旦设立后,能够无需中介的参与自动执行,并且没有人可以阻止他的运行。 区块链为智能合约提供可信的执行环境。

  智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。

  智能合约可以调用其他智能合约,这开启了创造一个自主代理的能力,这些代理可以自己进行交易。

        智能合约的编写可能会有漏洞,theDAOs是一个基于以太坊的去中心化自治基金,每个人都可以随时使用以太币参与,没有任何中心化的管理机构,由集体决策进行投资各类区块链项目。theDAOs就曾经被黑客攻击成功过,因为他没有像‘律师’这样的角色取审查智能合约的漏洞,

以太坊智能合约

智能合约:一小段存储在区块链中,能够自动执行合约条款的计算机程序

说白了就是发布在区块链上供其他账户调用执行的一段代码,对应这段code有合约账户的概念,存储相应的数据信息,以太坊的智能合约开发语言是Solidity,运行在EVM上,解决了跨平台问题,在以太坊上,给各种各样的智能合约套套外衣,化化妆,就成了各种各样的Dapp

智能合约的安全性问题


区块链的数据不可篡改是一把双刃剑。不可篡改性的优势在于任何人都不能篡改已发生的智能合约,规则制度实现了去中心化(前提是大多数节点是诚实的),但是也存在较大的弊端。

一方面,安全漏洞修复代价较高。如果调用数据的智能合约一旦出现安全漏洞或错误,因合约本身的不可篡改性会导致漏洞无法被修复,除非社区更新软件版本并且以硬分叉的方式(如 ETC 和 ETH 的分叉)。

而且,很多项目因出现类似问题没有及时修复而导致代币价值归零。

程序代码开源导致更容易被黑客攻击

从理论上来说,程序代码开源有利于让更多人对代码 Bug 起到修复的作用,进而对智能合约本身进行完善。

但实际上,智能合约开源代码导致黑客或恶意节点更容易发起攻击。

一方面,因为绝大多数人没有足够的时间或精力去检查代码智能合约代码本身的问题,而且存在较大的技术壁垒,所以群众对智能合约代码的监督作用有限。
另一方面,由于合约代码的不可篡改性,虽然使任何都不能任意更改交易规则,但是一旦代码出现漏洞再进行纠错的阻力较大,目前处理大规模漏洞的最好的方法是硬分叉(如 ETH 社区处理 The DAO),轻则让去中心化本身失去意义,重则导致项目破产。
而大多数项目方不具备足够的人力物力和财力(如 ETH 社区),使项目的收益远远小于风险。

原文链接:https://blog.csdn.net/inthat/article/details/106850863

用户账户和合约账户

用户帐户有:

  • 地址(有点像我们的银行帐号 - 比特bi也有同样的概念)
  • 余额(我有多少钱: 以太)

智能合约账户有:

  • 地址
  • 余额(有多少钱: 以太)
  • 状态(智能合约中声明的所有变量和变量的当前状态)
  • 代码

地址是帐户的唯一标识符,与常规用户帐户一样。

  合约用户中有智能合约代码,与个人帐户不同,它可以“主动操作”将交易发送给其他人(智能合约的“主动操作”通常是指在满足预设条件后,合约自动执行内部逻辑和状态更改,甚至可以触发发送交易给其他账户)。因此,如果我们想要使用智能合约的功能,我们必须在个人账户中发送“接收地址作为合同”(这里指的是,如果你想利用智能合约的功能,你需要向智能合约的地址发送交易。这个交易可以是资金转账,也可以是包含数据的调用,这些数据会触发智能合约执行特定的函数)。 “地址”交易,主动触发合同,让合同执行行动。

因此,任何交易的起点必须是个人账户。(虽然智能合约可以执行操作,但它们不能自己发起交易。所有的交易都必须由个人账户开始,即使是为了触发智能合约的执行。这是因为智能合约没有私钥,无法签署交易,而个人账户持有私钥,可以签署并发送交易。)

智能合约部署过程

1.开发人员用Solidity写合同

2.源代码编译为字节码

3.输入交易的输入数据

4.接收地址部分留空(0x0)

5.确定节点(矿工)将合同发送到链

6.矿工执行和部署链以生成智能合约 合同有自己的“合同地址”,永久在链上。

 智能合约是部署在区块链的代码,区块链本身不能执行代码,代码的执行是在本地的EVM中,实际上,部署在区块链上代码是能够在本地产生原智能合约代码的代码,可以理解区块链为一个数据库,而客户端从数据库中读取了存储的运行代码,并在本地运行后,将结果写入到了区块链这个数据库中。

智能合约调用过程

  1. 将函数调用转换为十六进制(HEX)格式

    首先,需要将要调用的函数及其参数转换为十六进制格式。例如,myFunction(parameters) 转换为 0xabcdef0123456789......
  2. 将信息放入交易对象中

    { "to": "0x0123456......", "value": 0, // 不需要发送金额 "data": "0xabcdef0123456789......" }
    
    创建一个交易对象,其中包括接收方地址(to)、发送金额(value,这里设为0,因为不需要发送以太币)以及数据(data,即上一步生成的十六进制格式函数调用)。
  3. 用私钥签名交易

    用你的私钥对交易进行签名。签名后的交易只能用你的公钥解密,确保只有你能发送这笔交易。
  4. 将交易发送到以太坊网络

    将签名后的交易发送到以太坊网络。交易将被广播到网络中的节点进行验证和处理。

这四个步骤展示了如何创建、签名并发送一笔包含函数调用的以太坊交易。

以太坊的交易类型


以太坊与比特bi很大的不同是其交易还有一个DATA字段。 DATA字段支持三种类型的交易:

价值传递 (和比特币相同)

        就是转移一定数量的以太到某个地址,如果我们愿意也可以向交易添加消息。
        TO :收款地址
        DATA :留空或留言信息
        FROM :谁发出
        AMOUNT :发送多少

{
    to: '0x687422eEA2cB73B5d3e242bA5456b782919AFc85',
    value: 0.0005
    data: ‘0x’ // 也可以附加消息
}


创建合约
        TO :留空 (TO为空表示创建智能合约,)
        DATA :包含编译为字节码的智能合约代码
        FROM :谁创建
        AMOUNT :可以是零或任何数量的以太,它是我们想要给合约的存款。

{
    to: '',
    value: 0.0
    data: ‘0x6060604052341561000c57xlb60405160c0806……………’
}


调用合约函数
        TO: 目标合约账户地址
        DATA: 包含函数名称和参数 - 标识如何调用智能合约函数
        FROM :谁调用
        AMOUNT : 可以是零或任意数量的以太,例如可以支付合约服务费用。

{
    to: '0x687422eEA2cB73B5d3e242bA5456b782919AFc85’, //合约
    value: 0.0
    data: ‘0x6060604052341561000c57fe5b60405160c0806……………’
}


                        
原文链接:https://blog.csdn.net/my_miuye/article/details/122925685

公有链和私有链

公有链


        全网公开,无用户授权机制的区块链,称为公有链。 与传统分布式系统的C/S , B/S或三层架构不同,比特币系统基于P2P网络,所有节点对等,且都运行同样的节点程序。

        节点程序总体上分为两部分:一部分是前台程序,包括钱包或图形化界面;另一部分是后台程序,包括挖矿、区块链管理、脚本引擎及网络管理等。 区块链管理:涉及初始区块链下载、连接区块、断开区块、校验区块和保存区块,以及发现最长链条的顶区块。

        内存池管理:即交易池管理。节点将通过验证的交易放在一个交易池中,并准备好将其放入下一步挖到的区块中。

        邻接点管理:当一个新比特币节点初始启动时,它需要发现网络中的其他节点,并与至少一个节点连接。

         共识管理:比特币中的共识管理包括挖矿、区块验证和交易验证规则。比特币采用PoW共识机制,依赖机器进行哈希运算来获取记账权,同时每次达成共识需要全网共同参与运算,允许全网50%节点出错。

        密码模块:比特币采用RIMEMD和SHA-256算法及Base-58编码生成比特币地址。

        签名模块:比特币采用椭圆曲线secp256k1及数字签名算法ECDSA来实现数字签名并生成公钥。

        脚本引擎:比特币的脚本语言是一种基于堆栈的编程脚本,共有256个指令,是非图灵完备的运算平台,没有能力计算任意带复杂功能的任务。

公有链与其他几个链的区别
(1)全网公开,无用户授权机制的区块链。

(2)允许授权的节点加入网络,可根据权限查看信息,往往被用于机构间的区块链,称为联盟链或行业链。

(3)所有网络中的节点都掌握在一家机构手中,称为私有链(中心性)。联盟链和私有链也统称为许可链,公有链称为非许可链。

(4)公有链的一个典型表现就是以太坊平台,因为以太坊使用智能合约和去中心化的特征恰好就是公有链的特征。 

公有链的问题(也就是大伙挖矿的时候会遇到的问题)
(1)激励问题:为促使全节点提供资源,自发维护整个网络,公有链系统需设计激励机制,以保证公有链系统持续健康运行。但比特币的激励机制存在一种“验证者困境”,即没有获得记账权的节点付出算力验证交易而没有任何回报。

(2)效率和安全问题:比特币平均每10 min产生1个区块,且其PoW机制很难缩短区块时间,PoS相对而言可缩短区块时间,但更易产生分叉,所以交易需要等更多确认才被认为安全,Gervais A等的试验得出:在假设各有30%算力的前提下,以太坊需要37个区块的确认才能达到比特币6个区块确认的安全水平。一般认为,比特币中的区块经过6个确认后才是足够安全的,这大概需要1h,对于大多数企业应用需求来说根本无法满足。

(3)公有链面临的安全风险:包括来自外部实体的攻击(拒绝服务攻击DDoS等)、来自内部参与者的攻击(冒名攻击Sybil Attack、共谋攻击Collusion Attack等)及组件的失效、算力攻击等。 (4)隐私问题:公有链上传输和存储的数据都是公开可见的,仅通过“伪匿名”的方式对交易双方进行一定隐私保护。对于某些涉及大量商业机密和利益的业务场景来说,数据的暴露不符合业务规则和监管要求。

(5)最终确定性(Finality)问题:交易的最终确定性指特定的某笔交易是否会最终被包含进区块链中。PoW等公有链共识算法无法提供最终确定性”,只能保证一定概率的近似,如在比特币中,一笔交易在经过2h后可达到的最终确定性为99.9999%,这对现有工商业应用和法律环境来说可用性较差(你觉得你交易成功了,但是没有成功。)。 

 私有链(Private Blockchain)


 私有链的定义
        私有链(Private Blockchain)是区块链的一种,它指的是某个区块链的写入权限仅掌握在某个人或某个组织手中,数据的访问以及编写等有着十分严格的权限。具体而言,系统内的各个节点写入权限将由组织来决定分配,而根据具体情况由组织决定对谁开放多少信息和数据简单的来说,就是一个人的微博账号;这个账号需要发送什么内容,需要向其他人传递什么信息,都取决于你。同时你可以通过设置权限来控制哪些人可以看见它,哪些人不能看见它。 

私有链的优势
        相对于公有链,私有链可以在不颠覆传统金融模式的前提下,日积月累的来改善存在于传统金融模式里的一些诟病,例如金融机构的工作效率问题、金融敲诈问题等。而公有链是软件来颠覆传统金融模式大部分功能的一种方法,这与私有链形成鲜明对比。

        私有链能给许多金融企业问题提供公有链无法解决的解决方案,如遵守规章制度:医疗保险可携行和责任法案(HIPAA)、 反洗钱(AML) 和了解你的客户(KYC) 制度。

 私有链的特点
优点
①交易效率高

        私有链的交易速度很快,毫不夸张的说,其速度可超过任何其他地的区块链。这是因为即使是少量的节点,其也具有高信任度,所以交易的进程不需要每一个节点都来验证,所有造就了私有链独一无二的交易速度。其速度之快,甚至接近了常规数据库(非区块链数据库)。 

②保障隐私

        私有链上不必处理访问权限等繁琐进程,个人数据不会被网络上任何人获得。 

③成本低

        私有链上完成的交易通常十分廉价或免费。这是因为私有链上的交易速度十分之快,各个节点间不需要完全的协议,以至于它们不会为任意一个交易而工作,如此一来大大降低了交易成本。 

④保护产品

        私有链的机制有效的使多数金融机构坦然接受,对于基本产品的保护,实体机构是不惜一切代价的。  

缺点
①应用受限制

        私有链受到许可权的限制,只适用于特定机构内部使用。

②不具备去中心化

        涉及到不同法律实体之间的资产结算问题,私有链仍然举步维艰,还在寻找改进结算机制的方法。

③易遭受攻击

        任何中心化和集中化的服务器,数据库和平台数据泄露和受到网络攻击的风险都会很高,恶意软件和黑客团体不断研究破解技术,其系统设计和治理集中在一方或几方手上。

 私有链的应用
        私有链的应用场景一般是企业内部的应用,如数据库管理、审计等;在政府行业也会有一些应用,比如政府的预算和执行,或者政府的行业统计数据,这个一般来说由政府登记,但公众有权力监督。

        私有链更多的是解决大型企业内部的信任问题,如大型跨地区、跨国企业,利用内部私有链来对财务、人事、资源、账单等进行核算统计溯源等等,减少内部信任问题,并且提高信息传递效率。

        目前并没有出色的代表性项目。由于私有链的记账权不公开,信息不透明,实际上更接近于传统的中心化架构。

相比中心化数据库,私有链能够防止机构内单节点故意隐瞒或者篡改数据,即使发生错误,也能够迅速发现来源。因此许多大型金融机构在目前更加倾向于使用私有链技术。

CHEX首席执行官EugeneLopin说:“ 私有链与传统的数据库基本没有差别,私有链与美化了的数据库意义是-一样的。但是其好处在于,如果开始将公共节点加入其中,会有更多节点。开放的区块链是拥有一个可信任账木的最佳方法。去中心化的范围越大,也越利于该技术的采用。” 虽然私有链有着众多的优势,但不可盲目采用。私有链需要找到迫切需要的需求场景方可适用。要做到共私并用,具体选择哪一种方案都需考虑项目的需求。 

混合链


什么是混合链?
混合链是一种独特的区块链技术,它融合了公有链和私有链的特点,利用公有链和私有链各自的特点,结合成为最佳方案,也就是说混合链同时具有公有链和私有链两种状态。

混合链中的交易和记录是私有的,旦可以在需要时进行验证,例如通过智能合约启用访问。也就是说,私人信息保存在网络内,但仍可验证。

 尽管私人实体可能拥有混合链,但它不能更改交易。混合链允许组织在公有无需许可的系统旁边建立一个私有、需要许可的系统,公有链和私有链各司其职,决定谁可以访问存储在区块链中的特定数据,以及哪些数据将被公开当用户加入混合链时,他们可以完全访问网络,用户的身份受到保护并不受其他用户的影响,除非他们参与交易,这样他们的身份才会被泄露给对方。

混合链特点 
        混合链既可以保护隐私,又可以与第三方进行通信。外部黑客无法对网络发起51%攻击,因为混合链在封闭的生态系统中运行。

        混合链中的交易既便宜又快速,并且能够产生比公有链更好的可扩展性。

        混合链尽管是私有的,但仍然提供完整性、安全性和透明度。同样,混合链可以完全被定制。

        交易可视化方面,可根据需求而定。混合链成员可以选择区块链中的参与者或决定哪些交易可以公开。这可以保证公司与股东进行良好的合作。

        51%的攻击是对比特币(或其他区块链网络)来说一种潜在的危机,由此单个单位或组织能够控制大部分算力,从而导致网络中断。

联盟链(Consortium Blockchain)


联盟链是什么?
        联盟链(Consortium Blockchain)是介于公有链与私有链之间的一种系统形态,它往往由多个中心控制。由若干组织一起合作维护一条区块链,该区块链的使用必须是带有权限的限制访问,相关信息会得到保护,如供应链机构或银行联盟。有专家指出,联盟链的本质是分布式托管记账系统,系统由组织指定的多个“权威”节点控制,这些节点之间根据共识机制对整个系统进行管理与送作。联盟链可视为“部分去中心化”,公众可以査阅和交易,但验证交易或发布智能合约需获得联盟许可。

联盟链的特点
优点
①相比于私有链的运作空间和效率,联盟链的价值更大

②相比于公有链完全去中心化的不可控性和隐私安全的问题,联盟链更加灵活,也更有操作性

③交易速度快,相比于公有链,联盟链每秒写入速度可以达到1000次以上数据写入,而公有链仅仅只有每秒3-20次数据写入

④交易成本更便宜。交易只需被几个受信的高算力节点验证就可以了,而无需全网确认。

⑤节点可以很好地连接,故障可以迅速通过人工干预来修复,并允许使用共识算法减少区块时间,从而更快完成交易。(区块链里有各种链,但目前最有实践意义的可能是联盟链)

缺点
①首先由于联盟链的半中心化的特性,容易受到恶意人员的攻击

②其次联盟链缺少行内的统一标准,使得在处理某些问题时充满着障碍

③虽然联盟链交易速度快,然而一些大型企业要想启动一个新的联盟,必须要经过所有成员的协议批准,而在这过程中各项程序过于繁琐,所以大型企业启动一个新的联盟链是非常缓慢的 

联盟链的典型代表 
1、R3

2、Hyperledge(超级账本) 

R3CEV 
R3CEV是一家总部位于纽约的区块链创业公司,由其发起的R3区块链联盟,目前已经有数十家国际银行和金融机构加入,成员遍及全球,R3是领先的技术服务提供商,可在受监管行业中实现数字协作。R3的信任技术、互联网络和受监管的市场专业知识可以推动市场创新并改进银行、资本市场、全球贸易和保险等业务的流程。作为首批提供专为受监管市场设计的唯一私有、安全和可扩展的DLT平台以及机密计算平台,R3能够充分发挥可信协作的潜力。R3提供专门构建的DLT和机密计算技术,以支持开发解决方案,促进和提供各方之间的数字信任。应用程序构建者包括 DTCC、Wells Fargo、MoneyGram、SIX Swiss Exchange 和 Nasdaq,以及全球主要的中央银行和监管机构。

Hyperledge(超级账本)
Hyperledge(超级账本)是Linux基金会于2015发起的推进区块链数字技术和交易验证的开源项目。Hyperledger的目标是让成员共同合作、共建开放平台以满足来自多个不同行业各种用户的需求,同时能大大简化业务流程。由于点对点网络的特性,分布式账本技术是完全共享、透明和去中心化的,故非常适合于在金融行业的应用,以及其他的例如制造、银行、保险、物联网等无数个其他行业。通过创建分布式账本的公开标准,实现虚拟和数字形式的价值交换,例如资产合约、能源交易、结婚证书、能够安全和高效低成本的进行追踪和交易。

区块链技术如何被更好的应用呢?基于公链还是联盟链?我们发现,即使政策层面从未对此有过表态,但中国企业们已经用脚做出了选择。谈及公链与联盟路的关系,京东数科创新科技业务部区块链技术负责人孙海波表示,联盟链的很多技术细节和技术原理来自于公链,它俩是相辅相成,不是互相排斥。之所以在中国布局联盟链的比较多,除了和国家政策指导有关,还因为公链不太适合企业的业务形态,但未来公链希望还是很大的。

加密算法

AES加密和RSA加密详细原理及使用场景_aes和ras-CSDN博客

MD5、SHA1这些哈希算法不是加密算法。加密的基本思想是将数据转换成一种掩盖了原始含义的字符或者字节形式,只有经过适当授权的人才能解密,得到真正的内容。

加密算法分类:

AES:对称加密

AES 算法依次对每个 128 位(比特)数据块应用一系列数学变换。

一般有 128 位(比特),192位和256位几种,一般记为AES-128、AES-192和AES-256。简短数据采用AES-128,也就是秘钥是16字节,少部分采用AES-256。

由于这种方法的计算要求较低,AES 可用于笔记本电脑和智能手机等消费类设备上进行数据加密,以及快速加密大量数据。

RAS:非对称加密

私钥和公钥是一对,都可以加解密,配对使用,只不过公钥可以公布出去,而私钥是持有者自己保留的。

  • 私钥加密公钥解密,能证明“私钥拥有者” 的唯一身份,用于签名。
  • 公钥加密私钥解密,确保发送的信息,只有"私钥拥有者"能够解密。

 RSA 算法需要的计算量比 AES 高,但速度要慢得多。它比较适合用于加密少量数据。

RSA和AES结合使用

AES 算法的一个主要问题是,作为一种对称算法,它要求加密方和解密方使用相同的密钥。这就产生了一个关键的密钥管理问题——如何将非常重要的密钥分发给分布在世界各地的授权接收者,而不会冒在传输途中某个地方考虑不周导致密钥泄露的巨大风险?答案是结合 AES 和 RSA 加密的优势。

在包括互联网在内的许多现代通信环境中,大量交换的数据都通过快速 AES 算法进行加密。为了获得解密数据所需的密钥,授权接收者发布一个公钥,同时保留一个只有他们知道的相关私钥。然后,发送方使用该公钥对他们自己的 AES 密钥进行RSA加密传输给接收方,接收方使用私钥解密得到AES密钥,再用该密钥对数据进行解密。

  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值