Jax Blog

你所关注的, 就是你的世界

一个程序猿的基本素养--科学上网

更新 2026-03-06 回头看几年前的自己, 多么稚嫩的年轻人啊. 不删不改, 留个纪念吧. 另外, 自己搭建 shadowsocks 的方案已经过时, 现在的方案是直接购买服务商的机场服务. 机场会提供多个代理节点. 本质上是一个商业化的代理节点集合 + 订阅服务. 用户付费买”流量包”或”套餐”, 通过订阅链接导入客户端(如 Clash、Shadowrocket、v2rayN、s...

人间词话 -- 王国维

每有闲暇时,最爱捧起的一本书,便是王国维的《人间词话》。喜欢古诗词,但是文学积累薄弱,自己瞎读书有很多东西不能理会,人间词话就是很好的引路人。王国维提出“境界”二字,来解读诗词之韵味格调。 词以境界为最上。有境界则自成高格,自有名句。五代北宋之词所以独绝者在此。 王国维最爱苏东坡和辛稼轩,不爱姜夔,而这也恰恰是我读他们诗词时的感受。我在学生时代就曾质疑过姜夔的诗词,辞藻华丽而意境不足。...

写于 2018 年末

昨天成都的空气很温暖,我甚至以为这是春天的味道。晚上睡觉还是开了空调。 来成都已小半年了吧,挺喜欢成都这座城市的。当然不只是因为这里有好吃的。成都的小酒吧也小有名气,但我这种人估计一辈子也不会习惯酒吧的,也不喜欢。时常有人一起提起成都和重庆,并且非要争一个高低。我对这种事情好像很不以为意。我觉得喜欢哪里就喜欢哪里呗,客观存在的差异就存在呗。我还是很愿意把他们称为兄弟城市的。成都的互联网环境...

iOS Security Framework 的签名和验证

Overview 为了在数据块上创建加密签名,首先要创建数据的散列,也就是对数据进行 hash 算法,这样就得到了数据的摘要,然后使用私钥加密此摘要,这样就得到了数据的签名。接收方使用您的公钥解密签名,同时独立地重新创建原始数据的散列(哈希)。如果解密后的哈希与计算出的哈希匹配,则接收方可以确保数据来自与公钥对应的私钥的所有者。 通常,将数据块签名作为执行其他操作的附属工作。例如,作为发...

EOS 的私钥和地址

私钥 私钥的本质是一个随机数, 这在之前的文章中已经提到过. 比特币私钥空间的大小是 2^256,这是一个非常大的数字。用十进制表示的话,大约是 10^77,而可见宇宙被估计只含有 10^80 个原子。 通常, 为了便于查看和导入导出, 私钥以 Base58 校验和编码格式显示,这种私钥格式被称为钱包导入格式(WIF,Wallet Import Format)。 EOS 私钥编...

对称加密加密算法 -- AES

对称加密 对称密钥加密(英语:Symmetric-key algorithm)又称为对称加密、私钥加密、共享密钥加密,是密码学中的一类加密算法。这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。事实上,这组密钥成为在两个或多个成员间的共同秘密,以便维持专属的通信联系。 与公开密钥加密(即非对称加密)相比,要求双方获取相同的密钥是对称密钥加密的主要缺点之一。 常见...

比特币的基石 -- 椭圆曲线密码学

椭圆曲线密码学是比特币算法中相当重要的一个密码学算法. 对于普通的开发者, 理解椭圆曲线密码学不是必须的, 因为的确已经有太多的 SDK 帮我们屏蔽了这些细节. 但是, 密码学是比特币的基石. 要真正进入区块链的世界, 深入理解其底层的密码学算法是必须的. 基础知识 椭圆曲线(英语:Elliptic curve,缩写为 EC)为一代数曲线,被下列式子所定义: y2 = x3 + ax ...

深入理解以太坊 -- 交易细节, RLP编码和签名

以太坊交易数据结构 以太坊交易数据结构定义如下: enum EthChainIDL: Int { case COIN_ETH = 1 case COIN_ROPSTEN = 3 case COIN_RINKEBY = 4 } struct SignTransaction { let value: BigInt let to: Address? let nonce: BigI...

精通比特币 -- 交易细节, 解锁脚本和锁定脚本

数据结构 首先整体地了解一下比特币交易的数据结构. 一个比特币交易, 包含一个或多个 UTXO 作为输入, 一个交易目的地址的 UTXO 输出, 通常还包括一个找零 UTXO 输出. 总输入减去总输出的部分作为手续费奖励给矿工. 以下是相关的数据结构定义示例: public struct Transaction { public let version: Int32 pu...

对象序列化 -- Protocol Buffers

Protocol buffers Protocol buffers 是 Google 开发的一套语言无关, 平台无关, 可拓展的对象序列化机制. 类似于 XML, JSON, 但是更快, 更小, 更简单. 定义了数据结构之后, 便可以用多种语言的特定代码去读和写这些结构化的数据. 不同于 JSON 和 XML等, Protocol buffers 的数据结构需要提前定义在 .proto 文...