Proof-of-History:Solana 区块链的创新时间证明机制
Proof-of-History (PoH) 是 Solana 区块链提出的一种创新的共识机制,它并不是传统意义上的共识算法,而是一种利用加密哈希链来确定全局时间和交易顺序的技术。PoH 不仅仅通过哈希函数确保数据的完整性,还提供了一个无需节点间同步的可靠时间证明机制,从而提高区块链的效率和吞吐量。
本文将深入探讨 PoH 的核心概念、实现细节以及它如何与其他共识机制(如 Proof-of-Stake)结合使用,最终为 Solana 区块链提供高效、安全的交易处理能力。
一、核心概念:哈希链与时间证明1. 加密哈希函数PoH 的核心概念是通过一个连续的哈希链来生成时间证明。每个新区块的哈希值都依赖于前一个区块的哈希值,这样形成一个不可篡改的时间顺序链。PoH 使用加密哈希函数,尤其是 SHA-256,它是用于计算数据完整性的重要工具。给定一个输入 X,SHA-256 会输出唯一的哈希值 Y,任何对 X 的改动都会导致输出 Y 完全不同。
这种特性是 PoH 的关键,它确保了区块数据的顺序和完整性。
在 Solana 的 PoH 序列中,通过将每个区块的哈希值作为下一个区块哈希函数输入的 ...
LangChain:构建智能语言模型应用的开源框架
什么是 LangChainLangChain 是一个强大的开源框架,旨在帮助开发者快速构建和管理基于大语言模型(LLMs)的应用程序。随着自然语言处理技术的飞速发展,LLMs 在文本生成、对话系统、内容推荐等领域展现出巨大的潜力。然而,要充分利用这些强大的模型并整合到复杂的应用中,开发者需要处理许多复杂的任务,如上下文管理、调用外部工具和数据整合。LangChain 通过提供一套模块化、可扩展的工具,简化了这些过程。
LangChain 的核心目标是使开发者能够构建 “智能” 应用,这些应用可以理解上下文、动态调整和集成外部资源。
LangChain 的主要应用场景1. 对话式 AI通过记忆功能和高级提示优化,可以构建更智能、更自然的聊天机器人。
2. 信息抽取与总结LangChain 可以处理长文档,提取关键信息并生成简洁摘要。
3. 搜索增强结合搜索工具,构建支持实时信息检索的问答系统。
4. 多步骤工作流自动化通过链和代理,可以创建复杂的自动化工作流,例如客户支持、教育内容生成等。
5. 多模态应用结合图像、视频等其他数据源,构建更丰富的交互体验。
LangChain 的核心 ...
区块链预言机:智能合约与现实世界的桥梁
18 年 11 月 6 日,中国人民银行发布的《区块链能做什么?不能做什么?》报告中,是这样对预言机定义的:
区块链外信息写入区块链内的机制,一般被称为预言机 (oracle mechanism)。
随着区块链技术的快速发展,区块链不仅在金融、供应链、物联网等领域取得了广泛应用,而且它的智能合约功能也逐渐成为去中心化应用(DApp)的核心。然而,区块链的智能合约有一个固有的限制——它只能在链内的数据上进行操作,无法与链外的世界进行交互。为了克服这一局限,区块链预言机(Oracle)应运而生,成为区块链和现实世界之间至关重要的桥梁。本文将深入探讨区块链预言机的工作原理、类型、应用场景以及面临的挑战,并展望其未来的发展趋势。
一、什么是区块链预言机?区块链预言机(Oracle)是一种将外部世界数据引入区块链的机制,它能够为智能合约提供必要的链外数据,使得智能合约能够在真实世界的基础上执行。这些数据可能包括天气信息、市场价格、体育比赛结果、地理位置数据等,任何与区块链内部状态无关的外部数据,都可以通过预言机传递给区块链智能合约。
智能合约本质上是一个自动化执行合同的程序,但其运行只能依赖 ...
使用 HSDIS 和 JITWatch 探索 Java 汇编指令
Java 虚拟机(JVM)作为一种现代化的虚拟机,具备即时编译(Just-In-Time, JIT)功能,可以将热点代码编译为高效的本地机器码以提高性能。在实际开发和性能调优中,我们可能需要分析 JVM 将 Java 字节码编译成的汇编指令。本篇博客将详细介绍如何使用 HSDIS 和 JitWatch 工具来查看和分析这些生成的汇编代码。
一、HSDIS 简介HSDIS(HotSpot Disassembler)是 HotSpot JVM 的反汇编插件,可以将 JIT 编译器生成的机器码转换成人类可读的汇编指令。HSDIS 是 JDK 的非官方组件,因此需要手动下载或编译。
二、JITWatch 简介JITWatch 是一个用于分析 JVM JIT 编译过程的可视化工具。它可以解析 JVM 日志文件(通常是通过 -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation 生成的),并展示 JIT 编译的详细信息,包括内联决策和汇编代码。
三、环境准备以下步骤基于 Linux 环境,但可以适配其他操作系统。
安装 JDK
确保你的系统安装了支 ...
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);在持续自我正常运行的同时,它还减少或消除了审查,第 ...