web3信息提炼
梅克尔树
链表也可以确保不可篡改性,为啥要用梅克尔树?
可以快速比较大量数据(将两组相同数据量的数据排序后,构建Merkle树,如果两个树的根相同,则两组数据是相同的)
快速归纳和校验区块数据的存在性和完整性。
https://cloud.tencent.com/developer/article/1405280
那么,为啥需要这样的数据结构?这就需要从简化支付验证(SPV:Simplified Payment Verification)说起了,也就是说如何验证或确保一个数字货币的交易已经在对应区块链的一个区块中了?
一种无脑的方式就是自己搭建一个节点下载和同步好区块链数据,然后通过节点程序查询交易对应的哈希值来判断是否交易已经存在这条已经同步好的数据区块中。这种方法至少有两个弊端:
- 数据下载量太大:下载通信量大同时本地存储空间大;
- 验证计算量大:需要把所有交易哈希值都串起来再计算对应的哈希值去比较是否相同。
比特币这条链的数据增长(目前已经在300GB左右)导致普通节点或者终端无法承载所有数据而实现自身验证交易可靠性
假如一个区块包含了Ta,Tb,Tc,Td,Te,Tf,Tg,Th等8个交易,而SPV钱包发起了对交易Td真实性的查询。在梅克尔树里面可以快速计算得到各个层级的哈希值,直到梅克尔树根的哈希值。然而被询问的全节点,无需传输整个梅克尔树的节点数据,而只需要传回给SPV钱包四个哈希值:Td, Hc, Hab, Hefgh。(logn+1)

从实践去理解这个场景要干啥
我的公钥hash收到一个交易,现在要履约了,但是我又不知道它有没有被篡改,比如交易显示它付了原价8块钱,实际只付了1块钱
- SPV钱包节点无需下载区块链完整数据,而只需下载区块链的每块不包含交易的头部数据;
- 在验证某一个交易真实性的时候,SPV钱包节点只需要把该交易哈希值向网络中连接的全节点(Full Node: 同步了全部区块链数据的节点,比如alchemy)发起询问;
- 网络里面的全节点只需要回复最小量必要数据给SPV钱包,即可验证交易真实性;
- 如果SPV钱包不信任提供交易验证数据的全节点,还可以同时发起多个全节点的询问,来确保交易验证的最大可靠性。
然后SPV钱包把计算出来的Habcefgh哈希值和自己同步下载好的区块数据块头里面的梅克尔树哈希值比较相等就行了。如果没有找到相等的,说明交易不可信。可能数据还没有同步过来,也可能交易就根本没有发生,所以暂时还不能相信或者接受/确认这个交易。
hash冲突,地址重合了?
到blockchain.info里看看这个地址里是否有比特币?访问网址:
https://blockchain.info/address/17mKugcBDEJbu391Fq41AdwLeGHwJLPRDf
不可能,任意2个人随机生成的地址正好相同的可能性相当于2个人从地球上捡起了同一粒沙子,再把这粒沙子看做地球,相当于2个人又从这个地球里捡起了同一粒沙子。
为什么我生成的比特币地址与别人的地址重合了?因为我的256位随机数并不随机,而是来自于圆周率π = 3.1415926535897932384626的十六进制表示。
3.243F6A8885A308D313198A2E03707344A4093822299F31D0082EFA98EC4E6C8
所以保证比特币安全的一条重要原则就是:一定要用真随机数作为私钥。
在Bitcoin Core等钱包里,随机数生成算法已经非常专业,重合的概率为0,可以放心使用。
https://cloud.tencent.com/developer/article/1146340
1)种子私钥
在区块链的世界里,我们持有的比特币只是一串私钥,一串256位的二进制数。如果你扔硬币,正面记为0,反面记为1,连扔256次,把它记录下来,再把这串二进制数值转换为十六进制数,你的所有家当就在这串私钥上了。
假设我有这样一串随机数:
3243F6A8885A308D313198A2E03707344A4093822299F31D0082EFA98EC4E6C8
为了让你看清楚它的字节数,我加了一条标尺,256位,64个十六进制数,32个字节。
2)Bitcoin Explorer 椭圆曲线生成公钥
3)
4)blockchain.info验证防重
能否伪装他人地址?不能,公钥-》私钥不可逆
能否被他人w诶装?己方做好私钥256位的随机性
https://www.bilibili.com/video/BV1Si82zuE9f/
cex/dex/钱包, https://www.bilibili.com/video/BV1Si82zuE9f/
1 cex没有钱包,只有账户
cex入金相当于我的钱包-》交易所钱包转账,C2B,交易所给你账户➕钱 —— 跟web2的券商差不多
没有链上手续费
2 dex交易从钱包出发,C2C
性能差,需要区块链确认,10笔/秒
3 钱包跨链,切换链
作为登陆dapp的账户(假如做一个dapp,对方用钱包登陆,账户怎么建?)
pow的弱点及pos怎么做的




pos 保证金
![]()
![]()
![]()
![]()
保证金51%=790亿美元
https://www.bilibili.com/video/BV18JB4YbETz/
overview
https://www.bilibili.com/video/BV1WytuzHEk1/



https://www.bilibili.com/video/BV1Lau3zYEdt/

加密货币与代币
加密货币-A国央行
代币-外汇交易所支持的B国货币
代币是指由特定区块链支持的货币(或数字资产),而不是由其自身驱动的货币。
alchemy & geth

https://zhuanlan.zhihu.com/p/629207949
alchemy
quicknode
infura
moralis
钱包公司服务器可以存用户私钥吗?
1 理论上可以
2 如何创建以太坊/比特币账户
2.1 小狐狸等
https://cloud.tencent.com/developer/article/2335967
2.2 自己开发一个钱包自己用,怎样用alchemy申请以太坊账户?怎么申请比特币账户?
2.2.1 node: web3.js ethers.js
https://www.cnblogs.com/tinyxiong/p/9923112.html
2.2.2 java web3.js
https://blog.csdn.net/starchou666/article/details/145414476
智能合约框架
remix truffle hardhat
POW的意义
价值的担保
最长链-工作量的担保,提高不诚实的交易代价
全网算力一半可以攻击,但代价高昂,提高作恶的成本
出块速度不能过快,因为越快更大可能分叉
去中心化,不能让挖矿巨头化
pos
奖励与惩罚
浙公网安备 33010602011771号