今天给大家聊到了OSCH区块链,以及区块链 contracts相关的内容,在此希望可以让网友有所了解,最后记得收藏本站。
北大青鸟java培训:组成区块链基础运算功能的组织架构内容?
随着互联网的都不发展,消费者对区块链技术和数字虚拟货币的认知程度也在不断的提高。
今天,我们就一起来了解一下区块链技术的基础运算方法都有哪些结构构成的。
下面java课程就一起来了解一下具体情况吧。
构成计算技术的基本元素是存储、处理和通信。
大型主机、PC、移动设备和云服务都以各自的方式展现这些元素。
各个元素之内还有专门的构件块来分配资源。
本文聚焦于区块链的大框架:介绍区块链中各个计算元素的模块以及各个模块的一些实现案例,偏向概论而非详解。
区块链的组成模块以下是去中心化技术中各个计算元素的构件块:存储:代币存储、数据库、文件系统/blob处理:有状态的业务逻辑、无状态的业务逻辑、高性能计算通信:数据、价值和状态的连接网络存储作为基本计算元素,存储部分包含了以下构件块。
代币存储。
代币是价值的存储媒介(例如资产、证券等),价值可以是比特币、航空里程或是数字作品的版权。
代币存储系统的主要作用是发放和传输代币(有多种变体),同时防止多重支付之类的事件发生。
比特币和Zcash是两大“纯净”的、只关注代币本身的系统。
以太坊则开始将代币用于各种服务,以实现其充当全球计算中心的理想。
这些例子中代币被用作运营整个网络架构的内部激励。
还有些代币不是网络用来推动自身运行的内部工具,而是用做更高级别网络的激励,但它们的代币实际上是存储在底层架构中的。
一个例子是像Golem这样的ERC20代币,运行在以太坊网络层上。
另一个例子是Envoke的IP授权代币,运行在IPDB网络层上。
数据库。
数据库专门用来存储结构化的元数据,例如数据表(关系型数据库)、文档存储(例如JSON)、键值存储、时间序列或图数据库。
数据库可以使用SQL这样的查询快速检索数据。
传统的分布式(但中心化)数据库如MongoDB和Cassandra通常会存储数百TB甚至PB级的数据,性能可达到每秒百万次写入。
SQL这样的查询语言是很强大的,因为它将实现与规范区分开来,这样就不会绑定在某个具体的应用上。
SQL已经作为标准应用了数十年,所以同一个数据库系统可以用在很多不同的行业中。
换言之,要在比特币之外讨论一般性,不一定要拿图灵完备性说事。
你只需要一个数据库就够了,这样既简洁又方便扩展。
有些时候图灵完备也是很有用的,我们将在“去中心化处理”一节具体讨论。
BigchainDB是去中心化的数据库软件,是专门的文档存储系统。
它基于MongoDB(或RethinkDB),继承了后者的查询和扩展逻辑。
但它也具备了区块链的特征,诸如去中心化控制、防篡改和代币支持。
IPDB是BigchainDB的一个受监管的公开实例。
在区块链领域,也可以说IOTA是一个时间序列数据库。
文件系统/blob数据存储。
这些系统以目录和文件的层级结构来存储大文件(电影、音乐、大数据集)。
IPFS和Tahoe-LAFS是去中心化的文件系统,包含去中心化或中心化的blob存储。
FileCoin、Storj、Sia和Tieron是去中心化的blob存储系统,古老而出色的BitTorrent也是如此,虽然后者使用的是p2p体系而非代币。
以太坊Swarm、Dat、Swarm-JS基本上都支持上述两种方式。
数据市场。
这种系统将数据所有者(比如企业)与数据使用者(比如AI创业公司)连接在一起。
它们位于数据库与文件系统的上层,但依旧是核心架构,因为数不清的需要数据的应用(例如AI)都依赖这类服务。
Ocean就是协议和网络的一个例子,可以基于它创建数据市场。
还有一些特定应用的数据市场:EnigmaCatalyst用于加密市场,Datum用于私人数据,DataBrokerDAO则用于物联网数据流。
处理接下来讨论处理这个基本计算元素。
“智能合约”系统,通常指的是以去中心化形式处理数据的系统[3]。
它其实有两个属性完全不同的子集:无状态(组合式)业务逻辑和有状态(顺序式)业务逻辑。
无状态和有状态在复杂性、可验证性等方面差异巨大。
三种去中心化的处理模块是高性能计算(HPC)。
无状态(组合式)业务逻辑。
这是一种任意逻辑,不在内部保留状态。
用电子工程术语来说,它可以理解为组合式数字逻辑电路。
这一逻辑可以表现为真值表、逻辑示意图、或者带条件语句的代码(if/then、and、or、not等判断的组合)。
因为它们没有状态,很容易验证大型无状态智能合约,从而创建大型可验证的安全系统。
N个输入和一个输出需要O(2^N)个计算来验证。
跨账本协议(ILP)包含crypto-conditions(CC)协议,以便清楚地标出组合电路。
CC很好理解,因为它通过IETF成为了互联网标准,而ILP则在各种中心和去中心化的支付网络(例如超过75家银行使用的瑞波)中广泛应用。
CC有很多独立实现的版本,包括JavaScript、Python、Java等。
BigchainDB、瑞波等系统也用CC,用以支持组合式业务逻辑/智能合约。
区块链带来了哪些影响
区块链会如何影响现实世界?所有权透明度增加。交易记录将会即刻对每个人可见。目前,在美国,机构投资者头寸的13F报告每季度只发布一次。此外,公司有三种不同的股东名单(公司、交易所、代理投票);公司往往并不知道他们真正的股东是谁。 透明度可以让投资者很难做到获得一个区块而不改变股价,这样就会加重Grossman和Hart在1980年提出的搭便车问题(Kyle and Vila (1991))。 透明度能够阻止内部交易,并且相反会鼓励外界获得信息(Fishman and Hagerty (1992), Bushman, Piotoski, and Smith (2005))。它同样会使期权奖励或者其他任何金融交易回溯的情况变为不可能。(Fishman and Hagerty (1992), Bushman, Piotoski, and Smith (2005)) 更强的流动性。执行和完成股票交易可以更加迅速实惠。在美国,目前的结算往往需要3天时间并有多方介入才能完成。 流动性可以加强股东通过行使发言权(请见Maug (1998) 和Kahn and Winton (1998)的模型,及Norli, Ostergaard, and Schindele (2015)提出的证据)和退出投资(请见Admati and Pfleiderer (2009) 和 Edmans (2009)的模型,及Edmans, Fang, and Zur (2013),还有Roosenboom, Schlingemann, and Vasconcelos (2014)提出的证据)实现的公司治理。 不仅是活跃的股东,普通人也可以从中受益。目前,从苏黎世汇款到纽约手续费是7%并且需要花3天时间。 投票。区块链可以用来记录公司选举的投票。这将会提高选举准确性,并且化解关于管理层通过幕后操纵赢得绝大多数投票结果非常接近的选举的顾虑。由于股票的借贷将会变得透明,区块链同时也会让空洞投票(模型搭建于Brav and Mathews (2011), 实证研究于Hu and Black (2006) 和Christoffersen, Geczy, Musto, and Reed (2007))变得更难。 实时记账。一个公司可以在区块链上发布其所有的商业交易,让任何人在任何时候都可以合计出他们的损益表和资产负债表。这可以大大地减少对审计员的需求、防止应计盈余管理、阻止关联方交易。 智能合约。智能合约是一种自动执行合约的方式:比如,如果借款人车贷违约,那么无人驾驶汽车可以自己开回银行。区块链可以很低廉地执行智能合约,比如一违约就改变抵押物的所有权。这从根本上减少了强制执行的成本。
区块链 --- 共识算法
PoW算法是一种防止分布式服务资源被滥用、拒绝服务攻击OSCH区块链的机制。它要求节点进行适量消耗时间和资源的复杂运算OSCH区块链,并且其运算结果能被其他节点快速验算,以耗用时间、能源做担保,以确保服务与资源被真正的需求所使用。
PoW算法中最基本的技术原理是使用哈希算法。假设求哈希值Hash(r),若原始数据为r(raw),则运算结果为R(Result)。
R = Hash(r)
哈希函数Hash()的特性是,对于任意输入值r,得出结果R,并且无法从R反推回r。当输入的原始数据r变动1比特时,其结果R值完全改变。在比特币的PoW算法中,引入算法难度d和随机值n,得到以下公式:
Rd = Hash(r+n)
该公式要求在填入随机值n的情况下,计算结果Rd的前d字节必须为0。由于哈希函数结果的未知性,每个矿工都要做大量运算之后,才能得出正确结果,而算出结果广播给全网之后,其他节点只需要进行一次哈希运算即可校验。PoW算法就是采用这种方式让计算消耗资源,而校验仅需一次。
PoS算法要求节点验证者必须质押一定的资金才有挖矿打包资格,并且区域链系统在选定打包节点时使用随机的方式,当节点质押的资金越多时,其被选定打包区块的概率越大。
POS模式下,每个币每天产生1币龄,比如你持有100个币,总共持有了30天,那么,此时你的币龄就为3000。这个时候,如果你验证了一个POS区块,你的币龄就会被清空为0,同时从区块中获得相对应的数字货币利息。
节点通过PoS算法出块的过程如下:普通的节点要成为出块节点,首先要进行资产的质押,当轮到自己出块时,打包区块,然后向全网广播,其他验证节点将会校验区块的合法性。
DPoS算法和PoS算法相似,也采用股份和权益质押。
但不同的是,DPoS算法采用委托质押的方式,类似于用全民选举代表的方式选出N个超级节点记账出块。
选民把自己的选票投给某个节点,如果某个节点当选记账节点,那么该记账节点往往在获取出块奖励后,可以采用任意方式来回报自己的选民。
这N个记账节点将轮流出块,并且节点之间相互监督,如果其作恶,那么会被扣除质押金。
通过信任少量的诚信节点,可以去除区块签名过程中不必要的步骤,提高了交易的速度。
拜占庭问题:
拜占庭是古代东罗马帝国的首都,为了防御在每块封地都驻扎一支由单个将军带领的军队,将军之间只能靠信差传递消息。在战争时,所有将军必须达成共识,决定是否共同开战。
但是,在军队内可能有叛徒,这些人将影响将军们达成共识。拜占庭将军问题是指在已知有将军是叛徒的情况下,剩余的将军如何达成一致决策的问题。
BFT:
BFT即拜占庭容错,拜占庭容错技术是一类分布式计算领域的容错技术。拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或中断以及遭到恶意攻击等原因,计算机和网络可能出现不可预料的行为。拜占庭容错技术被设计用来处理这些异常行为,并满足所要解决的问题的规范要求。
拜占庭容错系统 :
发生故障的节点被称为 拜占庭节点 ,而正常的节点即为 非拜占庭节点 。
假设分布式系统拥有n台节点,并假设整个系统拜占庭节点不超过m台(n ≥ 3m + 1),拜占庭容错系统需要满足如下两个条件:
另外,拜占庭容错系统需要达成如下两个指标:
PBFT即实用拜占庭容错算法,解决了原始拜占庭容错算法效率不高的问题,算法的时间复杂度是O(n^2),使得在实际系统应用中可以解决拜占庭容错问题
PBFT是一种状态机副本复制算法,所有的副本在一个视图(view)轮换的过程中操作,主节点通过视图编号以及节点数集合来确定,即:主节点 p = v mod |R|。v:视图编号,|R|节点个数,p:主节点编号。
PBFT算法的共识过程如下:客户端(Client)发起消息请求(request),并广播转发至每一个副本节点(Replica),由其中一个主节点(Leader)发起提案消息pre-prepare,并广播。其他节点获取原始消息,在校验完成后发送prepare消息。每个节点收到2f+1个prepare消息,即认为已经准备完毕,并发送commit消息。当节点收到2f+1个commit消息,客户端收到f+1个相同的reply消息时,说明客户端发起的请求已经达成全网共识。
具体流程如下 :
客户端c向主节点p发送REQUEST, o, t, c请求。o: 请求的具体操作,t: 请求时客户端追加的时间戳,c:客户端标识。REQUEST: 包含消息内容m,以及消息摘要d(m)。客户端对请求进行签名。
主节点收到客户端的请求,需要进行以下交验:
a. 客户端请求消息签名是否正确。
非法请求丢弃。正确请求,分配一个编号n,编号n主要用于对客户端的请求进行排序。然后广播一条PRE-PREPARE, v, n, d, m消息给其他副本节点。v:视图编号,d客户端消息摘要,m消息内容。PRE-PREPARE, v, n, d进行主节点签名。n是要在某一个范围区间内的[h, H],具体原因参见 垃圾回收 章节。
副本节点i收到主节点的PRE-PREPARE消息,需要进行以下交验:
a. 主节点PRE-PREPARE消息签名是否正确。
b. 当前副本节点是否已经收到了一条在同一v下并且编号也是n,但是签名不同的PRE-PREPARE信息。
c. d与m的摘要是否一致。
d. n是否在区间[h, H]内。
非法请求丢弃。正确请求,副本节点i向其他节点包括主节点发送一条PREPARE, v, n, d, i消息, v, n, d, m与上述PRE-PREPARE消息内容相同,i是当前副本节点编号。PREPARE, v, n, d, i进行副本节点i的签名。记录PRE-PREPARE和PREPARE消息到log中,用于View Change过程中恢复未完成的请求操作。
主节点和副本节点收到PREPARE消息,需要进行以下交验:
a. 副本节点PREPARE消息签名是否正确。
b. 当前副本节点是否已经收到了同一视图v下的n。
c. n是否在区间[h, H]内。
d. d是否和当前已收到PRE-PPREPARE中的d相同
非法请求丢弃。如果副本节点i收到了2f+1个验证通过的PREPARE消息,则向其他节点包括主节点发送一条COMMIT, v, n, d, i消息,v, n, d, i与上述PREPARE消息内容相同。COMMIT, v, n, d, i进行副本节点i的签名。记录COMMIT消息到日志中,用于View Change过程中恢复未完成的请求操作。记录其他副本节点发送的PREPARE消息到log中。
主节点和副本节点收到COMMIT消息,需要进行以下交验:
a. 副本节点COMMIT消息签名是否正确。
b. 当前副本节点是否已经收到了同一视图v下的n。
c. d与m的摘要是否一致。
d. n是否在区间[h, H]内。
非法请求丢弃。如果副本节点i收到了2f+1个验证通过的COMMIT消息,说明当前网络中的大部分节点已经达成共识,运行客户端的请求操作o,并返回REPLY, v, t, c, i, r给客户端,r:是请求操作结果,客户端如果收到f+1个相同的REPLY消息,说明客户端发起的请求已经达成全网共识,否则客户端需要判断是否重新发送请求给主节点。记录其他副本节点发送的COMMIT消息到log中。
如果主节点作恶,它可能会给不同的请求编上相同的序号,或者不去分配序号,或者让相邻的序号不连续。备份节点应当有职责来主动检查这些序号的合法性。
如果主节点掉线或者作恶不广播客户端的请求,客户端设置超时机制,超时的话,向所有副本节点广播请求消息。副本节点检测出主节点作恶或者下线,发起View Change协议。
View Change协议 :
副本节点向其他节点广播VIEW-CHANGE, v+1, n, C , P , i消息。n是最新的stable checkpoint的编号, C 是 2f+1验证过的CheckPoint消息集合, P 是当前副本节点未完成的请求的PRE-PREPARE和PREPARE消息集合。
当主节点p = v + 1 mod |R|收到 2f 个有效的VIEW-CHANGE消息后,向其他节点广播NEW-VIEW, v+1, V , O 消息。 V 是有效的VIEW-CHANGE消息集合。 O 是主节点重新发起的未经完成的PRE-PREPARE消息集合。PRE-PREPARE消息集合的选取规则:
副本节点收到主节点的NEW-VIEW消息,验证有效性,有效的话,进入v+1状态,并且开始 O 中的PRE-PREPARE消息处理流程。
在上述算法流程中,为了确保在View Change的过程中,能够恢复先前的请求,每一个副本节点都记录一些消息到本地的log中,当执行请求后副本节点需要把之前该请求的记录消息清除掉。
最简单的做法是在Reply消息后,再执行一次当前状态的共识同步,这样做的成本比较高,因此可以在执行完多条请求K(例如:100条)后执行一次状态同步。这个状态同步消息就是CheckPoint消息。
副本节点i发送CheckPoint, n, d, i给其他节点,n是当前节点所保留的最后一个视图请求编号,d是对当前状态的一个摘要,该CheckPoint消息记录到log中。如果副本节点i收到了2f+1个验证过的CheckPoint消息,则清除先前日志中的消息,并以n作为当前一个stable checkpoint。
这是理想情况,实际上当副本节点i向其他节点发出CheckPoint消息后,其他节点还没有完成K条请求,所以不会立即对i的请求作出响应,它还会按照自己的节奏,向前行进,但此时发出的CheckPoint并未形成stable。
为了防止i的处理请求过快,设置一个上文提到的 高低水位区间[h, H] 来解决这个问题。低水位h等于上一个stable checkpoint的编号,高水位H = h + L,其中L是我们指定的数值,等于checkpoint周期处理请求数K的整数倍,可以设置为L = 2K。当副本节点i处理请求超过高水位H时,此时就会停止脚步,等待stable checkpoint发生变化,再继续前进。
在区块链场景中,一般适合于对强一致性有要求的私有链和联盟链场景。例如,在IBM主导的区块链超级账本项目中,PBFT是一个可选的共识协议。在Hyperledger的Fabric项目中,共识模块被设计成可插拔的模块,支持像PBFT、Raft等共识算法。
Raft基于领导者驱动的共识模型,其中将选举一位杰出的领导者(Leader),而该Leader将完全负责管理集群,Leader负责管理Raft集群的所有节点之间的复制日志。
下图中,将在启动过程中选择集群的Leader(S1),并为来自客户端的所有命令/请求提供服务。 Raft集群中的所有节点都维护一个分布式日志(复制日志)以存储和提交由客户端发出的命令(日志条目)。 Leader接受来自客户端的日志条目,并在Raft集群中的所有关注者(S2,S3,S4,S5)之间复制它们。
在Raft集群中,需要满足最少数量的节点才能提供预期的级别共识保证, 这也称为法定人数。 在Raft集群中执行操作所需的最少投票数为 (N / 2 +1) ,其中N是组中成员总数,即 投票至少超过一半 ,这也就是为什么集群节点通常为奇数的原因。 因此,在上面的示例中,我们至少需要3个节点才能具有共识保证。
如果法定仲裁节点由于任何原因不可用,也就是投票没有超过半数,则此次协商没有达成一致,并且无法提交新日志。
数据存储:Tidb/TiKV
日志:阿里巴巴的 DLedger
服务发现:Consul etcd
集群调度:HashiCorp Nomad
只能容纳故障节点(CFT),不容纳作恶节点
顺序投票,只能串行apply,因此高并发场景下性能差
Raft通过解决围绕Leader选举的三个主要子问题,管理分布式日志和算法的安全性功能来解决分布式共识问题。
当我们启动一个新的Raft集群或某个领导者不可用时,将通过集群中所有成员节点之间协商来选举一个新的领导者。 因此,在给定的实例中,Raft集群的节点可以处于以下任何状态: 追随者(Follower),候选人(Candidate)或领导者(Leader)。
系统刚开始启动的时候,所有节点都是follower,在一段时间内如果它们没有收到Leader的心跳信号,follower就会转化为Candidate;
如果某个Candidate节点收到大多数节点的票,则这个Candidate就可以转化为Leader,其余的Candidate节点都会回到Follower状态;
一旦一个Leader发现系统中存在一个Leader节点比自己拥有更高的任期(Term),它就会转换为Follower。
Raft使用基于心跳的RPC机制来检测何时开始新的选举。 在正常期间, Leader 会定期向所有可用的 Follower 发送心跳消息(实际中可能把日志和心跳一起发过去)。 因此,其他节点以 Follower 状态启动,只要它从当前 Leader 那里收到周期性的心跳,就一直保持在 Follower 状态。
当 Follower 达到其超时时间时,它将通过以下方式启动选举程序:
根据 Candidate 从集群中其他节点收到的响应,可以得出选举的三个结果。
共识算法的实现一般是基于复制状态机(Replicated state machines),何为 复制状态机 :
简单来说: 相同的初识状态 + 相同的输入 = 相同的结束状态 。不同节点要以相同且确定性的函数来处理输入,而不要引入一下不确定的值,比如本地时间等。使用replicated log是一个很不错的注意,log具有持久化、保序的特点,是大多数分布式系统的基石。
有了Leader之后,客户端所有并发的请求可以在Leader这边形成一个有序的日志(状态)序列,以此来表示这些请求的先后处理顺序。Leader然后将自己的日志序列发送Follower,保持整个系统的全局一致性。注意并不是强一致性,而是 最终一致性 。
日志由有序编号(log index)的日志条目组成。每个日志条目包含它被创建时的任期号(term),和日志中包含的数据组成,日志包含的数据可以为任何类型,从简单类型到区块链的区块。每个日志条目可以用[ term, index, data]序列对表示,其中term表示任期, index表示索引号,data表示日志数据。
Leader 尝试在集群中的大多数节点上执行复制命令。 如果复制成功,则将命令提交给集群,并将响应发送回客户端。类似两阶段提交(2PC),不过与2PC的区别在于,leader只需要超过一半节点同意(处于工作状态)即可。
leader 、 follower 都可能crash,那么 follower 维护的日志与 leader 相比可能出现以下情况
当出现了leader与follower不一致的情况,leader强制follower复制自己的log, Leader会从后往前试 ,每次AppendEntries失败后尝试前一个日志条目(递减nextIndex值), 直到成功找到每个Follower的日志一致位置点(基于上述的两条保证),然后向后逐条覆盖Followers在该位置之后的条目 。所以丢失的或者多出来的条目可能会持续多个任期。
要求候选人的日志至少与其他节点一样最新。如果不是,则跟随者节点将不投票给候选者。
意味着每个提交的条目都必须存在于这些服务器中的至少一个中。如果候选人的日志至少与该多数日志中的其他日志一样最新,则它将保存所有已提交的条目,避免了日志回滚事件的发生。
即任一任期内最多一个leader被选出。这一点非常重要,在一个复制集中任何时刻只能有一个leader。系统中同时有多余一个leader,被称之为脑裂(brain split),这是非常严重的问题,会导致数据的覆盖丢失。在raft中,两点保证了这个属性:
因此, 某一任期内一定只有一个leader 。
当集群中节点的状态发生变化(集群配置发生变化)时,系统容易受到系统故障。 因此,为防止这种情况,Raft使用了一种称为两阶段的方法来更改集群成员身份。 因此,在这种方法中,集群在实现新的成员身份配置之前首先更改为中间状态(称为联合共识)。 联合共识使系统即使在配置之间进行转换时也可用于响应客户端请求,它的主要目的是提升分布式系统的可用性。
【区块链与密码学】第6-4讲:椭圆曲线的数字签名算法
1985年,Koblitz和Miller独立地提出了椭圆曲线公钥密码体制(ECC),安全性基于椭圆曲线群上的离散对数问题的难解性,该问题目前最好的解法是指数级时间的算法。
一般认为,RSA和DH密钥交换协议需用1024比特以上的模数才安全,但对ECC,只要160比特的模数就可达到同样级别的安全性。
椭圆曲线指的是由Weierstrass方程
所确定的曲线
有限域Fp上的椭圆曲线是由满足Fp上的方程
的所有点和无穷远点 O 构成的集合
有时也记作 E。
设 P , Q 是E上的任意两点,连接 P , Q 交 E 于 R’ ,则称 R’ 关于x轴的对称点 R 为 P 与 Q 的和,记为:
P + Q = R
当 P 与 Q 重合时
R = P+Q = P+P = 2P
此时称之为 点倍运算
当 P 与 Q 关于x轴对称时,
定义 P 与 Q 的和为 O ,即:
P + Q = O
并称 O 为无穷远点
可以证明,有限域上的椭圆曲线在我们定义的加法运算下构成群。
既然构成群,就必然有零元和负元,这里的零元就为无穷远点 O , P 的负元就是它关于x轴的对称点,记为 –P 。
显然有
P+O =O+P=P
若P=(x, y),则 –P=(x, –y) 且 P+(–P)=O
已知 E(F) 上两点 P=(x1, y1), Q=(x2, y2) , 求 P+Q 。
解:设 P+Q=R =(x3, y3) ,
解得
当 P≠Q 时,
当 P=Q 时,
k(k2) 个相同的点 P 相加为
此时称之为点乘运算
设
称n为点 P 的阶,记为 n=ord(P) 。
由阶为n的点 P 在上述加法定义下生成的循环群 P 是椭圆曲线群 (E(F), +) 的一个n阶子群。
设E是有限域 F 上的椭圆曲线, G 是 E 的一个循环子群,点 P 是 G 的一个生成元,即 G={kP: k≥1}, 在已知 P , Q 的条件下,求解整数n,使得 nP=Q 的问题,称为椭圆曲线 E 上的离散对数问题。
今天的课程就到这里啦,下一堂课我们将学习基于椭圆曲线的数字签名算法中的SM2算法,带大家继续了解数字签名,敬请期待!
-- 完 --
关注点宽学园,每周持续更新区块链系列课程,小宽带你进入区块链世界。我们下节课见啦。
【区块链与密码学】课堂回顾:
区块链与密码学系列文章合集
区块链有哪些入门书籍
入门认知篇
《新经济蓝图及导读》
出版年份:2016年
推荐语: 这本书侧重写了区块链前景的展望,书中除了作者原书的翻译,还增加了一些导读部分,案例丰富全面,讲解详细又不失理论高度,如果对区块链、互联网金融感兴趣,千万不要错过。维优元界( )的CEO初夏虎(Eric)也参与了本书的翻译。
《区块链:从数字货币到信用社会》
出版年份:2016年
推荐语:本书系统地对区块链的历史和现状、起源与发展以及问题和未来发展方向进行了总结梳理,结合进阶区块链、如何应用区块链、政府监管等进行案例分析,系统而又浅显。
《区块链: 重塑经济与世界》
出版时间:2016 年
推荐语:区块链的入门科普书籍,从区块链源头到未来,从目前的应用进展到未来应用蓝图,作者为业界一线成员和专家学者,汇聚实战和理论,具有很大的参考性。
投资篇
《如何投资数字货币》
出版时间:2017 年
推荐语:开篇以基础知识作为铺垫,接着第二部分介绍了投资交易方法,第三部分是投资理念,最后结合比特时代,狗狗币等案例介绍了区块链的发展和应用。可以让投资者通过本书快速的了解数字货币投资。
《虚拟货币投资实战技巧》
出版年份:2017 年
推荐语:致力于把各种价格分析技术和传统市场的操作理论用于虚拟货币市场,结合K线进行技术分析。技术党和短线爱好者不可放过的经典书籍。
《区块链社会 解码区块链全球应用与投资案例》
出版时间:2016 年
推荐语:介绍了区块链这一新兴技术在全球各行业的各种应用,并介绍了区块链技术的基本原理,共识机制以及发展脉络,独家披露了全球258个区块链行业内投资案例的详细数据。在投资上具有较强的价值参考。
技术篇
《精通比特币》
出版时间:2015 年
推荐语:从比特币原理到钱包挖矿再到竞争币等涉及的名词,针对于不同的用户群体从多个角度来阐释各关键技术概念。 围绕比特币进行区块链科普。
《区块链技术指南》
出版时间:2016 年
推荐语:从技术视角适来揭秘区块链,从入门基础知识到技术构建,帮助初学者入门,在最后回顾了区块链和IT之间的发展和未来的展望。
《C#区块链编程》
出版时间:2016 年
推荐语:本书主要面向程序员。结合API编程告诉你加密货币的原理、使用方法,以及如何开发与之相关的软件,对于非程序员读者们,本书前几章作为对比特币的深入介绍依然适用。(书籍pdf下载:)
OSCH区块链的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于区块链 contracts、OSCH区块链的信息别忘了在本站进行查找喔。
标签: #OSCH区块链
评论列表