-
我所理解的Javascript prototype chain
我所理解的 Javascript prototype chain Objective-C 中的类继承关系图 对 iOS 开发熟悉的同学应该都知道,OC 中有个经典的 metaclass / 和类继承关系图 Javascript 中的 prototype chain 而在 JS 中, 也同样存在类似的... Read More
-
我所理解的 Azure AD / Easy Auth 工作逻辑
我所理解的 Azure AD / Easy Auth 工作逻辑 Microsoft 官方文档 https://learn.microsoft.com/en-us/azure/app-service/overview-authentication-authorization https://learn.micros... Read More
-
在移动操作系统(iOS / Android)中通过设备触碰 NFC 标签打开 App 并进行跳转
在移动操作系统(iOS / Android)中通过设备触碰 NFC 标签打开 App 并进行跳转 NFC 读取场景 移动端 App 运行后读取 NFC 信息 这个不是我们这篇文章重点讨论的内容,可以参见 Android 和 iOS 的如下文档 Android: Near field communica... Read More
-
PrivadoID (polygonID) Cross-Chain Verification
PrivadoID (polygonID) Cross-Chain Verification 资料 Privado.ID Cross Chain Verification: https://docs.privado.id/docs/verifier/on-chain-veri... Read More
-
PrivadoID (polygonID) Web Wallet
PrivadoID (polygonID) Web Wallet 资料 文档: https://docs.privado.id/docs/wallet/web-wallet/ Web Wallet: https://wallet.privado.id Issue VC & Verification: https://web-w... Read More
-
一种可能的恶意修改 circom 的 ZKProof攻击方式
一种可能的恶意修改 circom 的 ZKProof 攻击方式 流程图 防范建议 不要在 verification 依赖 assert() 进行检查, 因为 verification 阶段依赖的都是 circom 编译时导出的 r1cs 约束信息, 而 assert()只在编译阶段和 w... Read More
-
解析circom编译过程中的.sym和substitutions.json文件
解析 circom 编译过程中的.sym 和 substitutions.json 文件 circom 文档 https://docs.circom.io/circom-language/formats/sym/ https://docs.circom.io/circom-language/formats/constraints-json/ h... Read More
-
使用 snarkjs 解析 circom 编译后的 r1cs 文件
使用 snarkjs 解析 circom 编译后的 r1cs 文件 snarkjs 文档 (从 circom 到 zkproof) https://github.com/iden3/snarkjs circom 文档 (从 circom 到 zkproof) https://github.com/iden3/circom https://do... Read More
-
记录自己减脂增肌的历程
记录自己减脂增肌的历程 今天的 blog 换一种风格, 记录一下自己减脂增肌的历程 从 2024 年 6 月 13 号开始,到 8 月 22 号左右,一共减了 30 斤左右。 但是 8 月底出去玩吃的有点多(我也是有意测试了一下胡吃海塞会怎么样), 第一天放开吃了一下就涨了 5 斤, ... Read More
-
Web3学习日记 - Web3 Android 原生库测试 (二)
Web3 学习日记 - Web3 Android 原生库测试 (二) web3j 的版本管理问题 web3j 不知道为什么,在 maven 上有一个目前为止版本号最高的 5.0.0, 发布于 2020 年 5 月 而真正最新的版本是 4.12.0 参见如下链接 https://github.com/hyperledger/web3j... Read More
-
Web3学习日记 - Web3在 Android 和 iOS 的原生库测试
Web3 学习日记 - Web3 在 Android 和 iOS 的原生库测试 iOS https://github.com/Boilertalk/Web3.swift https://github.com/yushihang/web3.swift.test Android http... Read More
-
Web3学习日记 - ZKSnark
Web3 学习日记 - ZKSnark 相关资料 一篇很好的文章 https://electriccoin.co/blog/snark-explain/ Read More
-
Web3学习日记 - Zether (二)
Web3 学习日记 - Zether (二) 相关资料 论文: https://eprint.iacr.org/2019/191 代码 repo: https://github.com/Consensys/anonymous-zether 代码 repo 中附带的两篇文章: https://github.c... Read More
-
Web3学习日记 - Zether (一)
Web3 学习日记 - Zether (一) 参考文档 我感觉这篇文档写的很详细,地址如下 https://m.elecfans.com/article/879403.html 为防止页面丢失,我直接贴内容到下面 一、什么是Zether? 斯坦福大学的博士生Benedik... Read More
-
Web3学习日记 - Wallet Connect 分析 (四)
Web3 学习日记 - Wallet Connect 分析 (四) DApp 和 Wallet 的通讯数据处理 Envelope WalletConnect 将数据封装方式定义为 Envelope https://github.com/WalletConnect/WalletConnectSwiftV2/blob/develop/Sour... Read More
-
Web3学习日记 - Wallet Connect 分析 (三)
Web3 学习日记 - Wallet Connect 分析 (三) UML 序列图如下 如果图片比例不对, 请将图片链接 copy 到新 tab 查看 Read More
-
Web3学习日记 - Wallet Connect 分析 (二)
Web3 学习日记 - Wallet Connect 分析 (二) Wallet Connect SDK 分类 Wallet Connect 有两套 SDK AppKit (以前叫 Web3Modal) WalletKit (以前叫 Web3Wallet) 相关页面见: https://docs.wa... Read More
-
Web3学习日记 - Wallet Connect 分析 (一)
Web3 学习日记 - Web3 学习日记 - Wallet Connect 分析 (一) Wallet Connect 介绍 Wallet Connect 是一个开源协议,用于连接去中心化应用程序(DApps)和钱包。它允许用户通过扫描二维码/粘贴 Url/唤醒 App,使用他们的移动钱包(如 Met... Read More
-
使用VSCode开发iOS项目
使用 VSCode 开发 iOS 项目 1. 摆脱对 xcodeproj 文件编辑的需求。 使用 XcodeGen 或者 CocoaPods 之类的工具实现,所有的 xcodeproj 和 xcworkspace 文件都根据文件目录架构和配置文件重新生成。 2. 创建编译 Task task.json 在项目根目录下的.vs... Read More
-
Python print函数不支持非 ASCII 字符的问题
Python print 函数不支持非 ASCII 字符的问题 [UnicodeEncodeError: ‘ascii’ codec can’t encode character u’\xa0’ in position 20: ordinal not in range(128)] https://gith... Read More
-
Swift的类函数和继承
Swift 的类函数和继承 单例 class Base { class func printClassName() { print("base") } class func foo() { print("foo") } } class Derived: Base { override class ... Read More
-
让 Swift 的 init()函数无法调用
让 Swift 的 init()函数无法调用 单例 class Singleton { static let shared = Singleton() private init() { } } 我们通常使用的单例如以上代码所示 但是如果我们想声明一个只包含 static 和 class 函数的 swift class, 这时候我们可能希望连自... Read More
-
DID 学习日记 - 如何在本地调试智能合约
DID 学习日记 - 如何在本地调试智能合约 安装 Ganache 从https://archive.trufflesuite.com/ganache/下载 Ganache 安装包,运行后的图片如下: 修改 Ganache 配置 点击右上角齿轮图标 按需修改端口 修改后点击右上角 Restart 按钮... Read More
-
DID 学习日记 - RHS里面的 key/path的细节
DID 学习日记 - RHS 里面的 key/path 的细节 RHS 链接: https://docs.iden3.io/services/rhs/ 这里面有个逻辑 https://github.com/iden3/merkletree-proof/blob/63e8bb011e0ef7ff4d881c9835b5e687d4eb4cda/proof.go#L122 func... Read More
-
DID 学习日记 - PolygonID DID VC/VP/Issuer Claim的 Revocation判断
DID 学习日记 - PolygonID DID VC/VP/Issuer Claim 的 Revocation 判断 Revocation 的定义 过期时间 VC 里存在过期时间的判断,Holder 和 Verifier 都可以通过与标准时间的比对来判断是否过期 Issuer 主动 ... Read More
-
DID 学习日记 - PolygonID DID JS SDK
DID 学习日记 - PolygonID DID JS SDK Flutter SDK 的相关库 https://github.com/0xPolygonID/polygonid-flutter-sdk/ (Flutter / dart) https://github.com/0xPolygonID/witnes... Read More
-
DID 学习日记 - PolygonID DID Wallet (iOS AppStore版本的) 的操作流程体验
DID 学习日记 - PolygonID DID Wallet (iOS AppStore 版本的) 的操作流程体验 相关网页/工具 issuer: https://issuer-ui.polygonid.me/credentials/issued schema explorer: https://schema-... Read More
-
DID 学习日记 - PolygonID 和 Iden3 的关系和区别
DID 学习日记 - PolygonID 和 Iden3 的关系和区别 从 github 上的人员来看,这两个 group 的人员是有重复的 PolygonID 的 Flutter SDK 实现 以及电路都是参照了 Iden3 的协议和电路代码 ... Read More
-
Xcode 项目中的 strip 设置
遇到的问题 今天在处理一个 Xcode 项目 archive 后的 ipa 测试时遇到一个问题 我们的项目是 swift 调用 flutter/dart xcframework, 然后 flutter 代码里用 ffi 调用了一些 static lib 里的 c-interface 函数。 因为 flutte... Read More
-
CocoaPods 配置 Xcode 中的自定义脚本
CocoaPods 配置 Xcode 中的自定义脚本 可以在 podspec 中加入如下脚本 Pod::Spec.new do |s| ... s.script_phases = [ { :name => 'My Custom Build Script', ... Read More
-
DID 学习日记 - PolygonID - 数据/操作流程 + 协议细节
DID 学习日记 - PolygonID - 数据/操作流程 + 协议细节 获取 schema 列表, 或者 build 一个自己的 https://schema-builder.polygonid.me 复制 Schema Url, 例如 ipfs://QmPt89E3QRjbFDHZRKmNXLoTssreHH... Read More
-
Swift TaskGroup限制并发数量
Swift TaskGroup 限制并发数量 import Foundation actor Semaphore { private var value: Int private var waiters: [CheckedContinuation<Void, Never>] = [] init(value: Int = 0) { ... Read More
-
DID 学习日记 - PolygonID - 基于 Ethereum address 的DID
DID 学习日记 - PolygonID - 基于 Ethereum address 的 DID https://docs.iden3.io/getting-started/identity/identity-types/#limitations-of-ethereum-controlled-ident... Read More
-
DID 学习日记 - PolygonID - 修改钱包公私钥
DID 学习日记 - PolygonID - 替换公私钥 在 client wallet 的 state 不上链的情况下,因为公钥通过各种 hash 和 authclaim + 三棵树唯一确定了 genesisDID 所以如果修改了私钥/公钥,公钥便无法和 genesisDID 对应, authV2 电路便无法验证 wa... Read More
-
DID 学习日记 - PolygonID - JWZ 中 Message 的校验
JWZ 中 Message 的校验 https://github.com/0xPolygonID/polygonid-flutter-sdk JWZ 中的 authToken 是通过让 bjjwallet 的 private key 对 message 的 jwz encode + poseidon hash 之后... Read More
-
DID 学习日记 - PolygonID - 从 Secret 到 ProfileDID
从 Secret 到 ProfileDID https://github.com/0xPolygonID/polygonid-flutter-sdk ProfileDID 的生成在 Iden3 的 AuthV2 和 MTPV2 / SigV2 都有实现。 我的理解是他可以让 Holder 通过自己定义的不同 nonce,... Read More
-
DID 学习日记 - PolygonID - JWZ格式
JWZ 格式 https://0xpolygonid.github.io/tutorials/wallet/wallet-sdk/polygonid-sdk/iden3comm/jwz/#difference-between-jwt-and-jwz 如果你曾经跟我一样对 JWZ 文档里的这一句非常疑惑 An... Read More
-
DID 学习日记 - PolygonID - GetProofs
DID 学习日记 - PolygonID - GetProofs https://github.com/0xPolygonID/polygonid-flutter-sdk 需要注意的是, 这里生成的 ZKProof 并没有包含 Holder 的身份证明,只是对 VC 的真实性(claims 是否被篡改,是否来自指定的 issuer,是否颁布给对应的 holder... Read More
-
DID 学习日记 - PolygonID - FetchAndSaveClaims
DID 学习日记 - PolygonID - FetchAndSaveClaims https://github.com/0xPolygonID/polygonid-flutter-sdk Read More
-
Xcode iOS 真机运行日志输出/查看
Xcode iOS 真机运行日志输出/查看 从某个版本开始, iOS 真机运行时, 从 macOS Consolg app 的窗口不能再看到 Swift 代码使用 print 打印的日志。 我这里的版本是 Xcode 15 + iOS 17.0 经过测试需要用如下代码打印 import os os_log("XXXX: \(message... Read More
-
DID 学习日记 - PolygonID - GetAuthToken
DID 学习日记 - PolygonID - GetAuthToken https://github.com/0xPolygonID/polygonid-flutter-sdk Read More
-
ZKSnark 学习笔记
ZKSnark 学习笔记 https://medium.com/@VitalikButerin/quadratic-arithmetic-programs-from-zero-to-hero-f6d558cea649#5539 This browser does not support PDFs. Please download t... Read More
-
SwiftUI 学习笔记
SwiftUI 学习笔记 对 Binding 的 extension extension Binding where Value == String{ func max (_ limit: Int) -> Self { if self.wrappedValue.count > limit { DispatchQueue.main.... Read More
-
Power of Tau
Power of Tau https://zhuanlan.zhihu.com/p/42196632 https://medium.com/coinmonks/simplifying-powers-of-tau-and-the-trusted-setup-ceremony-c9a4f... Read More
-
DID 学习日记 - PolygonID - CreateWallet
DID 学习日记 - PolygonID - CreateWallet https://github.com/0xPolygonID/polygonid-flutter-sdk Read More
-
MetaMask学习笔记
MetaMask 学习笔记 钱包生成 MetaMask 通过 BIP39 + BIP32 + BIP44 生成钱包 每个 account 的 address(通过 privatekey 生成) 都可以通过下面的路径推导出来 m/44’/60’/0’/0/{account_index} 所以当使用助记词恢复钱包时,会使用 account_index 从 ... Read More
-
DID 学习日记 - 基础知识 - BIP44
DID 学习日记 - 基础知识 - BIP32 简介 BIP44 BIP44 通过 BIP32 分层(树状结构)推导出来的秘钥,通常用路径来表示。 每个级别之间用斜杠 / 来表示。 由主私钥衍生出的私钥起始以“m”打头。 BIP44 则是 Multi-Account Hierarchy for Deter... Read More
-
DID 学习日记 - 基础知识 - BIP39
DID 学习日记 - 基础知识 - BIP39 简介 BIP39 提供把 12/15/18/24 个助记词(顺序相关)转换为 512-bit hex 的 seed 再结合 BIP32 和 BIP44 , 可以实现记下助记词即可恢复出所有主流钱包的 privatekey 的功能。 助记词列表 助记词列表... Read More
-
DID 学习日记 - 基础知识 - BIP32
DID 学习日记 - 基础知识 - BIP32 简介 BIP32 BIP32 提供了一种从一个私钥生成多个分层钱包的方法。 HD 钱包其实就是 BIP32 提案的名字,Hierarchical Deterministic Wallets(分层确定性钱包)。 Read More
-
DID 学习日记 - 基础知识 - 默克尔树(merkle tree)
DID 学习日记 - 基础知识 - 默克尔树(merkle tree) 资料 wikipedia Paper 我对默克尔树的一些粗浅理解 结构 默克尔树是一种二叉树结构,其中每个非叶节点的值是其两个子节点值的哈希值的串联。最终的根节点哈希值代表整个数据集的完整性。 ... Read More
-
DID 学习日记 - 基础知识 - JSONLD
DID 学习日记 - 基础知识 - JSONLD 资料 https://json-ld.org wikipedia ChatGPT 的解释 Me: 是不是可以理解为 jsonld 为 json 的每个字段提供了一种“注释”的方法 ChatGPT: 是的,你可以将 JSON-LD 看... Read More
-
DID 学习日记 - PolygonID - 优化 getproofs 性能
DID 学习日记 - PolygonID - 优化 getproofs 性能 优化方案 通过日志打印确认了耗时的函数调用 总共进行了三点优化 将原来串行的 for-loop + await, 改为 Future.await(), 即将每次 for-loop 迭代中的函数,在同一个 Future.await(... Read More
-
正确读取iOS存储剩余空间
正确读取 iOS 存储剩余空间 见苹果官方文档https://developer.apple.com/documentation/foundation/urlresourcekey/checking_volume_storage_capacity) 如果你还在用下面的旧代码,并且发现获取到的值不对,请用官方文档中的方法 extensio... Read More
-
iOS上的 OpenMP 支持
iOS 上的 OpenMP 支持 遇到的问题 最近在编译 iOS 下的 rapidsnark 发现运行起来对比 Android 性能低了不少 检查了 CMakeLists.txt 中的如下片段,发现在 iOS 上就没有启用 openmp 支持 if(USE_OPENMP) find_package(OpenMP) ... Read More
-
如何指定生物认证方式(FaceID/TouchID)保护 keychain 数据
如何指定生物认证方式(FaceID/TouchID)保护 keychain 数据 如果是手动拉起验证 那么调用LAContext的evaluatePolicy即可 func evaluatePolicy( _ policy: LAPolicy, localizedReason: String, r... Read More
-
DID 学习日记 - 基础篇 - poseidon hash
DID 学习日记 - 基础篇 - poseidon hash 官方资料 https://www.poseidon-hash.info Poseidon Poseidon2 我对 poseidon hash 的一些粗浅理解 与其他 hash 共有的特点 poseidon hash 和其他 ha... Read More
-
Rust编译为 C 接口 Native Library 时的Panic处理
Rust 编译为 C 接口 Native Library 时的 panic 处理 问题代码 例如这份代码 // WARNING still updating the code, it works, but is still in process the refactor. pub mod eddsa; use poseidon_rs::Poseidon... Read More
-
编译 iOS 上的 OpenMP.xcframework
编译 iOS 上的 OpenMP.xcframework 如下两个文件放在同一个目录下, 然后运行 build_omp_ios.sh build_omp_ios.sh #!/bin/bash usage() { echo "Usage: $0 {-d | --disableSimulator}" 1>&2; exit 1;... Read More
-
SwiftUI 中@State变量在构造函数中的赋值问题
SwiftUI 中@State 变量在构造函数中的赋值问题 常用方式 如下的代码是 SwiftUI 中常用的方式, 也可以正常运行 import SwiftUI struct ContentView: View { @State var index: Int = 1 var body: some View { VStack(spa... Read More
-
Git修改提交历史中的邮箱
Git 修改提交历史中的邮箱 先用如下命令修改当前 git 项目的邮箱 git config user.email "xxx@xxx.com" 如果要修改整个项目的历史提交记录 git rebase -r --root --exec "git commit --amend --no-edit --reset-au... Read More
-
我对 W3C DID 1.0 标准的理解
我对 W3C DID 1.0 标准的理解 先放官方链接 我对这个东西的理解比较肤浅,仅供参考。 DID 的全称 DID 的全称为 Decentralized Identifiers (去中心化身份) 现有的中心化的应用场景 我喜欢用如下生活体验的场景来解释 DID 的作用: 证明的签署和发... Read More
-
Flutter开发记录
Flutter 开发记录 全局日志打印的截获 Future<void> main() async { runZoned( () async { //在这里写原本的 main 函数中的内容 WidgetsFlutterBinding.ensureInitialized(); runApp(const... Read More
-
Flutter作为module集成到iOS/Android项目中的一些问题
Flutter 作为 module 集成到 iOS/Android 项目中的一些问题 Flutter 工程的分类 Flutter 工程可以分为两大类,App/Modules 和 Packages Packages Dart Packages Plugin packages FFI Plugin package ... Read More
-
Circom 中赋值(<--)和约束(<==)的关系和区别
Circom 中赋值(<–)和约束(<==)的关系和区别 我的疑惑 在学习 Circom 的时候,我发现 Circom 中有两种赋值的方式,一种是 <--,一种是 <==。 文档上提到,<-- 是赋值,<== 是赋值+约束。 也就是说 a <== b 其实是如下代码的语法糖 ... Read More
-
如何在 Apple Silicon 上使用 Homebrew 安装 x86_64 的库
如何在 Apple Silicon 上使用 Homebrew 安装 x86_64 的库 Circom 生成的 C++代码 在上一篇文章中,当执行完如下命令后 circom AgeProof.circom --r1cs --wasm --sym --c 其实会同时生成如下两个目录: AgeProof_cpp 和 AgeProof_j... Read More
-
Circom 电路描述语言 和 零知识证明(ZKProof) 学习记录
Circom 电路描述语言 和 零知识证明(ZKProof) 学习记录 Circom 的文档链接: 官方文档 其他文章: <==和<—的区别(赋值了为什么还需要约束) 一篇很不错的科普 搭建 Circom 开发环境 安装 rustup curl --proto '=https' --t... Read More
