L1.5 - 预言机

预言机问题 区块链和智能合约是一个完全封闭且自洽的系统。为了保证网络中每个节点运行代码的结果都完全一致(可验证、可重复),智能合约无法主动连接互联网去获取外部信息。 智能合约如果只在“小黑屋”里自娱自乐,实际用途会非常有限。要释放它的全部商业潜力,它必须知道“屋外的世界”发生了什么,比如:ETH现在的美元价格是多少?某个地方发生飓风了吗?这些存在于区块链外部的信息被称为链下数据(Off-chain data)。 既然智能合约出不去,外部数据就必须被“人为”送进去。但是,区块链的核心价值在于去中心化和免信任(不依赖单一的中心化权威)。如果我们只依赖一个中心化的服务器或个人来提供数据,一旦这个源头作恶、被黑客攻击或宕机,整个智能合约的执行就会出错。如何既能把现实世界的数据送上链,又不会引入单点故障、不破坏区块链的去中心化和免信任特性? 传统解决方案 首先需要注意的是:预言机本身并不是数据源,它是一个中间件。它负责从外部世界(如金融市场的 API 接口、政府公开数据库、甚至现实中的物联网/IoT设备)抓取数据,然后将这些数据“喂”给区块链上的智能合约。 它的核心价值在于:…

1009. 十进制整数的反码

题目 每个非负整数 N 都有其二进制表示。例如, 5 可以被表示为二进制 "101",11 可以用二进制 "1011" 表示,依此类推。注意,除 N = 0 外,任何二进制表示中都不含前导零。 二进制的反码表示是将每个 1 改为 0 且每个 0 变为 1。例如,二进制数 "101" 的二进制反码为 "010"。 给你一个十进制数 N,请你返回其二进制表示的反码所对应的十进制整数。 示例 1: 输入:5 输出:2 解释:…

L1.3 - ReactVM和睿应式网络

双重实例 一个响应式合约虽然只有一套代码,但它会同时运行在两个不同的环境中:Reactive Network (RN) 和 ReactVM。即每个响应式合约在部署后,实际上存在两个物理上的实例: * Reactive Network (RN) 实例:表现得像传统的 EVM 区块链,负责与系统合约交互,管理事件的订阅(Subscribe)和取消订阅(Unsubscribe)。 * ReactVM 实例:这是一个受限的隔离环境,专门用于处理事件逻辑。它不直接与外部交互,而是通过 RN 接收事件并发送回调请求。 Reactive Network的本质是普通的 EVM 区块链 + 额外的"系统合约",其监听以太坊、BNB、Polygon、Optimism 等链上的事件,管理订阅关系(订阅/取消订阅),同时接收用户直接发起的交易。 而ReactVM本质是一个"隔离的小虚拟机&…

L1.4 - 订阅机制

核心接口 ISubscriptionService 接口 订阅服务接口提供订阅和取消订阅的能力: interface ISubscriptionService is IPayable { function subscribe( uint256 chain_id, // 监听哪条链 address _contract, // 监听哪个合约 uint256 topic_0, // 事件签名(keccak256哈希) uint256 topic_1, // 索引参数1 uint256 topic_2, // 索引参数2 uint256 topic_3 // 索引参数3 ) external; function unsubscribe(...) external; // 参数相同 } IReactive 接口 这是响应式合约接口定义了合约如何接收和处理事件: interface IReactive is…

L1.2 - Events and Callbacks

EVM中的事件 事件允许智能合约在满足特定条件时,通过记录特定信息来与外部世界进行通信。有了事件,去中心化应用(dApps)就可以直接响应发生的动作,而不需要不停地主动查询(轮询)区块链状态。 EVM 会对事件进行索引(Index),这使得监控区块链活动(如转账、价格变化)变得非常高效和容易。当合约触发事件时,数据被存储在交易的日志(Logs)中。这些日志虽然附着在区块链的区块上,但它们不会直接影响区块链的状态(例如,它们不会改变账户余额或合约变量的值)。 开发者通过两个核心关键字来使用事件: 触发(Emit):使用 emit 关键字来正式记录数据。 例如:emit PriceUpdated("ETH", newEthPrice); 定义(Define):使用 event 关键字,后接事件名称和要记录的数据类型。 例如:event PriceUpdated(string symbol, uint256…

L1.1 - Reactive Contracts

控制反转 考虑一个场景,在没有控制反转的情况下,如果你想实现自动化(例如:当币价跌到 100 时自动卖出),你必须依赖外部实体: * 传统方案的局限:你需要设置一个中心化的“机器人 (Bot)”来监控链上数据。这个机器人持有你的私钥,并在满足条件时替你签名发送交易。 * IoC 的优势: * 无需机器人:不再需要托管额外的实体来模拟人类签名。 * 去中心化自动化:只要输入和输出都在链上,逻辑就可以在去中心化的网络中完全自主运行。 * 消除单点故障:避免了因机器人服务器宕机或私钥泄露导致的风险。 * 传统模式:执行逻辑由外部力量(普通用户 EOA 或中心化机器人)启动。合约是“被动”的,没有外部指令它就是死的。 * 睿应模式:执行逻辑由合约自身根据预设事件决定何时运行。控制权从外部转移到了合约内部。 * 为什么要“反转”? 传统的自动化需要你运行一个中心化机器人,给它私钥,让它不断扫描链上状态并签名发交易。这不仅存在单点故障风险,还引入了私钥管理的安全性挑战。RCs 允许你在完全去中心化的环境下运行这种逻辑。 ![[Pasted image 202603…

L1 - Introduaction

睿应式合约 睿应式智能合约(RCs) 是一种范式转变。 * 传统合约(EVM):是“被动”的。它像一个上锁的柜子,除非有人拿着钥匙(发交易)去开它,否则它永远不会动。 * 睿应式合约(RCs):是“主动”的。它像一个带传感器的机器人,它会盯着其他区块链上的“风吹草动”(事件日志),一旦发现符合条件的情况,它就自己根据逻辑去执行动作。 通过依据预设逻辑处理事件,并自主在区块链上执行后续操作。这是一种更去中心化的自动化机制,可在无需人工干预的情况下,自动响应链上事件。 当前以太坊生态的一个痛点:对中心化脚本/机器人的依赖。如果你想做一个“自动止损”功能,传统合约自己做不到。你必须写一个链外的 Python 或 JS 脚本(机器人),给它私钥,让它不断扫描链上价格,然后由这个机器人发交易。 那么这样的一个模式存在风险: * 中心化风险:如果你的机器人服务器宕机了,自动化就失效了。…

3129. 找出所有稳定的二进制数组 I

题目 给你 3 个正整数 zero ,one 和 limit 。 一个 二进制数组 arr 如果满足以下条件,那么我们称它是 稳定的 : * 0 在 arr 中出现次数 恰好 为 zero 。 * 1 在 arr 中出现次数 恰好 为 one 。 * arr 中每个长度超过 limit 的 子数组 都 同时 包含 0 和 1 。 请你返回 稳定 二进制数组的 总 数目。 由于答案可能很大,将它对 109 + 7 取余 后返回。…