3074. 重新分装苹果

题目 你一个长度为 n 的数组 apple 和另一个长度为 m 的数组 capacity 。 一共有 n 个包裹,其中第 i 个包裹中装着 apple[i] 个苹果。同时,还有 m 个箱子,第 i 个箱子的容量为 capacity[i] 个苹果。 请你选择一些箱子来将这 n 个包裹中的苹果重新分装到箱子中,返回你需要选择的箱子的 最小 数量。 注意,同一个包裹中的苹果可以分装到不同的箱子中。 示例 1: 输入:apple = [1,3,2], capacity = [4,3,1,5,2] 输出:…

3217. 从链表中移除在数组中存在的节点

题目 给你一个整数数组 nums 和一个链表的头节点 head。从链表中移除所有存在于 nums 中的节点后,返回修改后的链表的头节点。 示例 1: 输入: nums = [1,2,3], head = [1,2,3,4,5] 输出: [4,5] 解释: 移除数值为 1, 2 和 3 的节点。 示例 2: 输入: nums = [1], head = [1,2,1,2,1,2] 输出: [2,2,2] 解释: 移除数值为…

记一次对Widevine DRM的视频破解方法 - 以XCREAM为例

XCREAM一些视频是可以下载的,另一些是只能流媒体观看,而且下载的视频也只能下载三次,所以既有现实需要又可以钻研网络安全,就来看看怎么个事。 DRM 全称 Digital Rights Management,也就是常见的视频加密,视频加密是什么呢?俗话说就是厂商不让你下载到视频,这时候有人要出来反对了:凡是网页上能看到的元素,理论上都能找到办法下载出来。 这话不假,所以我说厂商不让你下载到视频,实际上说的是不让你下载到“真实的”视频,视频文件在传输过程中就是加密的,只有真实播放的时候才通过通信拿到密钥,然后一帧帧的解密出来,这个过程是实时的,因此你也是找不到办法看到真正的视频的。 目前主流浏览器的 DRM: DRM 公司 常见平台 Widevine Google Chrome / Android FairPlay Apple Safari / iOS PlayReady Microsoft Edge / Windows 各个公司的攻防难度各不相同,不过我们今天只讨论Widevine,因为许多流媒体平台比如Netflix,Amazon,Sp…

R1 - Reactive Basic

Origins & Destinations Callback Proxy Address 在去中心化世界里,“谁在调用我”至关重要。假设你有一个目标链合约,功能是“发放奖励”。如果这个合约谁都能调用,那黑客分分钟就把钱领光了。 我们介绍 Callback Proxy ,它是目标链上一个固定的、受信任的地址。其是由 Reactive Network 官方在各个支持的目标链上预先部署好的基础设施合约。 由于 Reactive Network 是一个独立于以太坊或其他 Layer 2 的网络,当它需要向目标链(如 Arbitrum 或 Base)发送指令时,目标链上的业务合约需要一个“受信任的来源”来验证这些指令。 * 统一性: 官方在每条链上部署一个统一的 Proxy 地址,开发者不需要自己去写复杂的跨链验证逻辑。 * 权威性: 官方负责维护这个代理合约的安全,确保只有经过 Reactive Network 共识验证的消息才能通过这个代理发出来。…

L2.2 - 部署睿应式合约

我们设定一个场景:监控器盯着 Uniswap V2 的流动性池,一旦发现价格(储备金比例)跌破了你设定的标准,它就会自动“拍马赶到”,触发一个止损交易(Stop Order)。这里就使用到了睿应式合约。 我们通过 UniswapDemoStopOrderReactive 这个合约案例为例子,这个合约追踪 Sync 事件以确定何时满足止损单的条件。当这些条件被触发时,它在以太坊区块链上执行回调交易以执行止损单。 关键组件 事件声明和数据常量 // SPDX-License-Identifier: GPL-2.0-or-later pragma solidity >=0.8.0; import '../../../lib/reactive-lib/src/interfaces/IReactive.sol'; import '../../../lib/reactive-lib/src/abstract-base/AbstractReactive.sol&…

3296. 移山所需的最少秒数

题目 给你一个整数 mountainHeight 表示山的高度。 同时给你一个整数数组 workerTimes,表示工人们的工作时间(单位:秒)。 工人们需要 同时 进行工作以 降低 山的高度。对于工人 i : * 山的高度降低 x,需要花费 workerTimes[i] + workerTimes[i] * 2 + ... + workerTimes[i] * x 秒。例如: * 山的高度降低 1,需要 workerTimes[i] 秒。 * 山的高度降低 2,需要 workerTimes[i] + workerTimes[i] * 2 秒,依此类推。 返回一个整数,表示工人们使山的高度降低到 0 所需的 最少…

L2.1 - Uniswap V2

流动性池 在传统的交易所(如纳斯达克或币安),交易是靠“订单簿”完成的:有人想买,有人想卖,价格匹配才能成交。 但在 Uniswap V2 中,交易不需要等待对手方。流动性池就像是一个“智能自动售货机”: * 它始终包含两种代币(例如 ETH 和 USDT)。 * 池子里储备了大量的这两种代币,由“流动性提供者”(LP)存入。 * 当你来交易时,你不是在和另一个人交易,而是在和这个智能合约里的储备金交易。 这种流动性池时去中心化的,因为其包含两个特点: * 无需许可 (Permissionless):不需要传统的做市商(机构或银行)来提供流动性。任何人都可以把自己的代币存入池中成为流动性提供者,并赚取交易手续费。 * 透明性 (Transparency):所有的操作都发生在以太坊区块链上。这意味着每一笔兑换、每一次存钱或取钱,在 Etherscan 这样的区块浏览器上都是公开透明、不可篡改的。 智能合约在这里: * 管理着这些储备金,确保没有人能随便把钱提走。…