比特币
不要被学术界的思维限制了头脑,不要被程序员的思维限制了想象力。
比特币中的密码学
比特币中的哈希特性
Collision resistance (抗哈希碰撞)
没有高效的方法来人为的制造哈希碰撞
- Collision resistance的定义:给定X,没有高效的方法找到Y,使得H(X) = H(Y)
- Collision resistance的特性:无法用数学证明
- MD5哈希函数:以前认为是Collision resistance,后来被鉴定为不安全的哈希函数,可通过人为的方式制造哈希碰撞
- 比特币中使用的哈希函数:SHA-256(Secure Hash Algorithm)
Hiding
哈希的过程单向不可逆
- Hiding的定义:输入值的空间够大,且分布均匀,取值可能性相同
实际场景如何实现Hiding(保证分布均匀):输入值 + 随机数(输入X || nonce随机数)后经过Hash
Puzzle friendly
事先无法知道什么样的输入能得到一个什么样的哈希值,只能一个个尝试
比如挖矿,H(nonce + block header) <= target,没有捷径,只能去尝试多个nonce来找到解 => proof of work
比特币中的账户管理
非对称加密(asymmetric encryption algorithm):加密解密不用同一个密钥,加密用公钥,解密用私钥
去中心化,每个用户本地自己生成一组公钥和私钥,公钥相当于银行账号,私钥相当于账号密码
比特币交易过程中,为了能知道交易是由谁发起,需要用私钥将交易签名,公钥验证
两个人生成的公钥私钥相同怎么办(256位的值,产生两组相同公钥私钥的概率微乎其微)
message取hash->hash取签名
Webpack运行时runtime做了什么事情
webpack 的 runtime,也就是 webpack 最后生成的代码,实现了一个自定义的模块加载系统,替代浏览器原生的模块机制
webpack_modules
维护一个所有模块的数组。将入口模块解析为 AST,根据 AST 深度优先搜索所有的模块,并构建出这个模块数组。每个模块都由一个包裹函数 (module, module.exports, webpack_require) 对模块进行包裹构成。
webpack_require(moduleId)
手动实现加载一个模块。对已加载过的模块进行缓存,对未加载过的模块,执行 id 定位到
webpack_modules
webpack_modules中的包裹函数,执行并返回 module.exports,并缓存
webpack_require(0)
webpack_require_(0)运行第一个模块,即运行入口模块,另外,当涉及到多个 chunk 的打包方式中,比如 code spliting,webpack 中会有 jsonp 加载 chunk 的运行时代码。
MCP学习
MCP概述
MCP(Model Context Protocol)模型上下文协议
MCP用途
能让模型更好的使用各类工具(大模型本身只会问答)
MCP Host
支持MCP协议的软件,Cursor,Claude Desktop,Cline
MCP Server
本质上是一个符合MCP协议的程序,不一定联网
timeout: 60 (连接MCP Server的超时时间)
command: uv (程序)
transportType: stdio、sse(client和MCP Server沟通的方式)
以一个 MCP Server 为例
MCP Server,MCP Host,用户,模型交互流程

如何使用别人写的MCP Server
- mcp.so
- mcpmarket.com
- smithery.ai
MCP Server一般用 Python 或 Node 编写,对应启动程序 -> uvx,npx
开发一个MCP Server
MCP底层协议
MCP的含义和地位
币圈知识体系
如何使用TradingView的自定义Plugin
结合官方文档:https://tradingview.github.io/lightweight-charts/docs/plugins/intro 食用
代码见:tradingview示例:K线图绘制图片
Series Primitives
生命周期
- attached:添加到图表时触发,附加方法通过一个参数调用,该参数包含图表、系列以及用于请求更新的回调函数
- detached:移除图表时触发
