区块链预言机:智能合约与现实世界的桥梁
18 年 11 月 6 日,中国人民银行发布的《区块链能做什么?不能做什么?》报告中,是这样对预言机定义的:
区块链外信息写入区块链内的机制,一般被称为预言机 (oracle mechanism)。
随着区块链技术的快速发展,区块链不仅在金融、供应链、物联网等领域取得了广泛应用,而且它的智能合约功能也逐渐成为去中心化应用(DApp)的核心。然而,区块链的智能合约有一个固有的限制——它只能在链内的数据上进行操作,无法与链外的世界进行交互。为了克服这一局限,区块链预言机(Oracle)应运而生,成为区块链和现实世界之间至关重要的桥梁。本文将深入探讨区块链预言机的工作原理、类型、应用场景以及面临的挑战,并展望其未来的发展趋势。
一、什么是区块链预言机?区块链预言机(Oracle)是一种将外部世界数据引入区块链的机制,它能够为智能合约提供必要的链外数据,使得智能合约能够在真实世界的基础上执行。这些数据可能包括天气信息、市场价格、体育比赛结果、地理位置数据等,任何与区块链内部状态无关的外部数据,都可以通过预言机传递给区块链智能合约。
智能合约本质上是一个自动化执行合同的程序,但其运行只能依赖 ...
Solana:重塑区块链生态的高速革命
Solana 是一个高性能的区块链平台,以其卓越的可扩展性和极快的交易速度吸引了全球开发者和加密爱好者的关注。作为一个相对较新的区块链项目,Solana 不仅在技术创新上突破重围,还在实际应用上展现出强大的潜力。本文将详细探讨 Solana 的背景、技术特点、与其他区块链的比较以及它在去中心化金融(DeFi)和非同质化代币(NFT)等领域的应用。
一、Solana 背景简介Solana 是由 Anatoly Yakovenko 于 2020 年推出的一个区块链平台。Yakovenko 是前 Qualcomm 的工程师,他设计 Solana 的初衷是为了克服以太坊等现有区块链平台在扩展性和交易速度上的局限。Solana 提供了一个非常快速、低成本且高可扩展的区块链环境,旨在支持大规模的去中心化应用(DApps)和智能合约。
与以太坊、比特币等传统区块链相比,Solana 的最大特点就是其极高的吞吐量。Solana 采用了一系列创新的技术,使其能够处理数万笔交易,而不会出现拥堵的现象。这一特点使得 Solana 成为加密行业中的新兴领导者,特别是在去中心化金融(DeFi)和非同质化代币(N ...
InnoDB 存储引擎是如何管理和存储数据
如何连接 Mysql ?在 Java 中,通常使用 JDBC(Java Database Connectivity)来连接数据库。JDBC 定义了一套用于访问数据库的 API,它提供了一种标准的接口,使得我们可以通过 Java 代码与各种数据库进行交互。
常见的 Java Web 系统是部署在 Tomcat 中的,那么 Tomcat 本身肯定是有多个线程来并发处理接收到的多个请求的,Mysql 是怎么处理的呢?
在 Mysql 中,引入了连接池,连接池会维护一组可重用的数据库连接,应用程序需要访问数据库时可以从连接池中获取一个可用连接,执行完毕后将连接归还给连接池。这样可以减少连接的频繁创建和销毁,提升性能。
如下所示:
Mysql 如何处理连接请求的?当 Mysql 接收到一个网络连接请求后,它是如何去处理该请求的,如何执行 SQL 的,总体的步骤可以分为一下几步:
开启一个端口监听的线程,用于网络连接以及读取请求。
Mysql 内部提供了一个 SQL 接口(SQL Interface)的组件,用来专门执行 SQL 语句的接口
通过查询优化器选择最优的查询路径来执行
调用执 ...
搞明白什么是零拷贝,就是这么简单
我们总会在各种地方看到零拷贝,那零拷贝到底是个什么东西。接下来,让我们来理一理啊。拷贝说的是计算机里的 I/O 操作,也就是数据的读写操作。计算机可是一个复杂的家伙,包括软件和硬件两大部分,软件主要指操作系统、驱动程序和应用程序。硬件那就多了,CPU、内存、硬盘等等一大堆东西。这么复杂的设备要进行读写操作,其中繁琐和复杂程度可想而知。
传统I/O的读写过程如果要了解零拷贝,那就必须要知道一般情况下,计算机是如何读写数据的,我把这种情况称为传统 I/O。数据读写的发起者是计算机中的应用程序,比如我们常用的浏览器、办公软件、音视频软件等。而数据的来源呢,一般是硬盘、外部存储设备或者是网络套接字(也就是网络上的数据通过网口+网卡的处理)。过程本来是很复杂的,所以大学课程里要通过《操作系统》、《计算机组成原理》来专门讲计算机的软硬件。
简化版读操作流程那么细的没办法讲来,所以,我们把这个读写过程简化一下,忽略大多数细节,只讲流程。
上图是应用程序进行一次读操作的过程。
应用程序先发起读操作,准备读取数据了;
内核将数据从硬盘或外部存储读取到内核缓冲区;
内核将数据从内核缓冲区拷贝到用 ...
跨越性能瓶颈:Layer2技术为区块链解决可扩展性问题
区块链有个著名的”不可能三角”问题,即一条区块链的发展很难兼顾安全、去中心化和可拓展性。
以太坊举例,虽然在去中心化和安全方面做的已经足够好,但随着用户越来越多,其交易速度变慢、交易手续费高、用户体验恶化是一直以来有待解决的问题。尤其是在 17 年出现了一款非常火爆的 Dapp 应用叫加密猫,造成以太坊主网大规模的拥堵。造成拥堵的原因是以太坊当时的 TPS 只有 15,这意味着以太坊每秒只能处理 15 笔交易,如此低的 TPS 严重限制了区块链应用的大规模落地。
想提升公链的可扩展性,有两种方式:
1、链上扩容:
扩展主网本身(Layer 1)称为链上扩容方案。主要通过提高区块链本身的交易容量来实现扩容。比如早期对比特币进行区块大小调整,隔离见证的引入,以太坊 2.0 的转 POS 和分片机制。但是 Layer 1 的扩容要么进展缓慢,要么对性能的提升没有质的变化。
2、链下扩容:
链下扩容是在底层区块链 Layer 1 上构建一个扩展层 Layer 2,通过将一部分交易或计算迁移到区块链外的第二层网络来提高可扩展性和效率。 Layer1 来保证安全和去中心化,绝对可靠、可信;它能 ...
MVCC如何应对MySQL并发问题
数据库使用事务来保持数据最终一致性,但是在并发下执行事务,会引起脏读、不可重复读、幻读等问题。为了解决这些问题,设计了四种隔离级别:
读未提交(Read uncommitted)
读已提交(Read committed)
可重复读(Repeatable read)
串行化(Serializable)
不同的隔离级别,解决了不一样的并发问题,那么不同的隔离级别是怎么解决并发问题的呢? 一个比较简单粗暴的方法是加锁,但是加锁必然会带来性能的降低。因此,数据库又引入了 MVCC(多版本并发控制)和锁配合使用,在读取数据不用加锁的情况下,实现读取数据的同时可以修改数据,修改数据时同时可以读取数据。
什么是 MVCC
MVCC,全称 Multi-Version Concurrency Control,即多版本并发控制。MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。
数据库并发场景:
读-读:不存在任何问题,不需要并发控制。
读-写:有线程安全问题,可能会造成事务隔离性问题,可能会有脏读,幻读,不可重复读。
写-写:有线程安全问题 ...
以太坊概述
以太坊基础知识什么是以太坊以太坊(Ethereum)是一个去中心化的开源的有智能合约功能的公共区块链平台。 以太坊的概念首次在 2013 至 2014 年间由程序员维塔利克·布特林(Vitalik Buterin)受比特币启发后提出,大意为“下一代加密货币与去中心化应用平台”,在 2014 年通过 ICO 众筹得以开始发展。以太坊亦被称为“第二代的区块链平台”,仅次于比特币。目前为止,以太坊是被使用最多的区块链平台。
以太币(ETH 或 Ξ)是以太坊的原生加密货币,目前是市值第二高的加密货币,仅次于比特币。
以太坊特点
以太坊是 “世界计算机”,这代表它是一个开源的、全球分布的计算基础设施。
执行称为智能合约(smart contract)的程序。
使用区块链来同步和存储系统状态以及使用名为以太币(ether)的加密货币,以计量和约束执行资源成本。
本质是一个基于交易的状态机 (transaction-based state machine)。
以太坊平台使开发人员能够构建具有内置经济功能的强大去中心化应用程序(DApp);在持续自我正常运行的同时,它还减少或消除了审查,第 ...
从CPU聊到Java内存模型
当谈到并发编程时,Java 内存模型(Java Memory Model,简称 JMM)是一个关键概念。它定义了线程如何与主内存交互以及如何在自己的工作内存中存储数据。理解和遵守 Java 内存模型对于编写正确且高效的多线程程序至关重要。
注意:Java 内存模型并不是 JVM 内存模型。JVM 内存模型指的是 JVM 内存是如何划分的,比如我们平常所说的堆、栈、方法区等。而 Java 内存模型定义了 Java 语言如何与内存进行交互,具体地说是 Java 语言运行时的变量,如何与我们的硬件内存进行交互。
从 CPU 说起缓存一致性在计算机中 CPU 负责计算,内存负责存储,每次运算 CPU 需要从内存中获取数据。但是 CUP 的运算速度远远大于内存的速度,这样会出现每次计算时 CPU 等待内存的情况。
为了弥补 CPU 和内存之间存在的速度差异,因此引入了 CPU 高速缓存,CPU 高速缓存介于 CPU 和内存之间。每次运算先从内存读取到 CPU 高速缓存中,CPU 再从 CPU 高速缓存中读取。
下面是我现在的使用的电脑,有三级缓存。
随着技术的发展,出现了多核 CPU,进一步提升 ...
SkyWalking,分布式链路追踪
随着业务的发展,软件架构也越来越复杂,为了适应海量用户高并发请求,系统中的组件也逐渐的变为分布式,单体服务变为微服务、缓存变为分布式缓存、组件通信变为分布式消息。
系统进行交互时,一个请求往往需要调用多个服务,当需要排查问题时,搞清楚服务之间的调用关系,服务与服务的调用顺序就变得重要起来。
什么是分布式链路追踪分布式链路追踪就是将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等。
链路追踪最早可以追溯到谷歌的 Dapper 系统,但是 Dapper 链路追踪系统并没有开源,不过谷歌发表了一篇论文:《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》,讲述了分布式链路追踪的理论和 Dapper 的设计思想,特别是微服务架构中链路追踪的概念、数据表示、埋点、传递、收集、存储与展示等技术细节。
Dapper 中有几个关键的技术点来表示链路的信息:Trace、Span、Annotations。
TraceTrace 表 ...
什么是DAPP
DAPP(分布式应用),区块链新物种,去中心化 App简单来说,DAPP 和普通的 App 原理一样,除了他们是完全去中心化的,由类似以太坊网络本身自己的节点来运作的 DAPP,不依赖于任何中心化的服务器,DAPP 是去中心化的,可以完全自动地运行。
1、DAPP(分布式应用)是什么DAPP 是 Decentralized Application 的缩写,中文叫分布式应用/去中心化应用,通常来说,不同的 DAPP 会采用不同的底层区块链开发平台和共识机制,或者自行发布代币(也可以使用基于相同区块链平台的通用代币)。
符合以下 3 个条件的应用可以认为是一个 DAPP(分布式应用):
运行在分布式网络上;
参与者信息被安全存储,隐私得到很好的保护;
通过网络节点去中心化操作。
2、DAPP 的四个特征DAPP 不同的底层区块链开发平台就好比手机的 IOS 系统和 Android 系统,是各 DAPP 的底层生态环境,DAPP 就是底层区块链平台生态上衍生的各种分布式应用,也是区块链世界中的基础服务提供方,DAPP 于区块链,就好比 APP 之于 IOS 和 Android。
一个真 ...