Json Web Token
Json Web Token (JWT) 是一个开放标准(RFC 7519),它符合设计 Restful API 时的无状态原则,每一次从客户端向服务器发出的请求都是独立的。
JWT 由三个部分组成:Header、Payload 和 Signature,它是一个长字符串,每个子串之间不存在换行符,一般的格式是[Header].[Payload].[Signature]
其 Header 承载了两部分信息:类型和所使用的密码算法,例如
1234{ "alg": "HS256", "typ": "JWT}
Payload 存放了实际需要传递的数据,JWT 中所规定的 7 个可选用的常规字段如下,负载默认是不会进行加密的,所以不可以用来存放秘密信息
Field
Name
Desc
iss
Issuer
签发人
exp
Expiration Time
过期时间
sub
Subject
主题
aud
Audience
受众
nbf
Not Before
生效时间
...
Golang 泛型编程
这里涉及到要学习泛型是由于工程里面遇到一个问题,karmem 下在序列化和反序列化的时候所编写的代码在很大程度上是相似的
于是解决方案就是为不同的结构体都写对应的序列化和反序列化函数来封装
123456func DeserializeGeneralParams(byteParamsData []byte) (*common.GeneralParams, error) { generalParams := new(common.GeneralParams) generalParams.ReadAsRoot(karmem.NewReader(byteParamsData)) return generalParams, nil}
但是这样又存在一个问题,每次新增结构体都需要 copy 新的函数为它进行反序列化和序列化,那么就特别麻烦,所以考虑能不能通过泛型实现类似下面的操作
123456func DeserializeKarmemStruct[T KarmemStruct](byteParamsData []byte) (*T, error) { gener ...
BIP、闪电网络与 Trao
BIP 标准比特币改进建议(Bitcoin Improvement Proposal, BIP)是 Amir Taaki 在2001年的 BIP-0001 中提出,由 Luke Dash Jr. 在 BIP-0002 中对该标准进行了扩展[1]。
BIP stands for Bitcoin Improvement Proposal. A BIP is a design document providing information to the Bitcoin community, or describing a new feature for Bitcoin or its processes or environment. The BIP should provide a concise technical specification of the feature and a rationale for the feature.
BIP 代表比特币改进提案。BIP是向比特币社区提供信息的设计文档,或描述比特币或其流程或环境的新功能。BIP 应提供该功能的简明技术规范和功能的基本原理 ...
密码累加器
密码累加器用于高效地证明元素是否存在于集合中,定义:
集合 $X = \{x_1, …,x_n\}$
集合的累加值 $acc_X$
集合中的元素 $x_i$,对应一个证明 $w_i$
通过证据 $w_i$,可以证明元素 $x_i$ 存在于集合 $X$
累加器的三个性质:正确性、健壮性、不可区分性
正确性:对于所有诚实生成的密钥、所有诚实计算的累加值和证据,验证算法始终返回 1
健壮性:指无碰撞性,对于元素 $y\notin X$,很难找到其成员证明,而对于元素 $x_i \in X$,也很难找到其非成员证明
不可区分性:累加器和持有证明的用户都不会泄露有关累加集合 $X$ 的信息
发展历程
1993年首次被提出,其最初的构造为静态累加器,集合固定不变
2002年提出了动态累加器的概念,可以支持动态添加、删除元素
2007年,通用累加器被提出,可以姐姐成员证明和非成员证明
非通用累加器智能支持元素的成员证明,即证明 $x_i \in X$,无法提供 $y\notin X$ 的证明 $w_y$
模型一个密码累加器中有三个主体:
累加器管理员:生成密钥对,创建并发布累加 ...
Kademlia协议及广播方法
Kademlia 协议Kademlia[1]协议是一种分布式散列表(Distributed Hash Table, DHT) 技术。它可以被用来构建 P2P 网络,相比其他的散列表技术,提高了路由的查询速度。
在 Kademlia 协议中,利用异或来定义了节点之间的距离。这个距离是一个逻辑距离,而不是两个节点实际上的物理距离。在 Kademlia 协议中,每个节点都有一个随机生成的长度为160 bit的ID,而两个节点之间的距离就是把它们的 ID 异或后得到的值。
结合异或本身的性质,可以得到距离的一些特点[2]:
$A \bigotimes B = B \bigotimes A$:A 到 B 和 B 到 A 的距离是一样的
$A \bigotimes A = 0$:节点自身和自身的距离是0
$A \bigotimes B > 0$:任意两个不同节点之间的距离大于0
$(A \bigotimes B) + (B \bigotimes C) \ge (A \bigotimes C)$:A 经过 B 到达 C 的距离大于 A 直接到达 C 的距离
K-bucket在 Kade ...
Sundaeswap feature
这篇是前几个月的Sundaeswap的可搬砖套利的小特性(bug)的记录,目前特性已经被修复,所以也没法用了
Sundaeswap是Cardano链上上线的第二个去中心化交易所(Decentralized exchange, Dex),由于Cardano使用的UTXO模型的原因,所以它在实现的本质上还是一种挂单交易的方式,不过流动性相比于直接挂单的交易所更好
在上线前三个月存在一个特性,可以在Sundaeswap的首页查询到一个币种的多个交易池,但是在实际的swap界面上只能默认流动性最高的池子。
交易池:放入了不同币种对的一种抽象模型,可以放入一种币种在交易池中换取另外一种币种,现在的去中心化交易所使用的都是一类公式。
做一个简单的举例,假设人民币比美元是6:1,那么就可以创建一个交易池放入600人民币和100美元,这样其他人就可以在里面交易,而交易池可以得到手续费。如果不按照比例来进行设置,那么其他人就存在一定的套利空间,导致交易池出现损失。
在抓包后可以发现,Sundaeswap进行一次交易要经过下面的一系列操作
本地根据流动性、滑点、手续费计算得到该笔交易中能够获取到的 ...
毕业行·甘肃
8月2日(Day.10)中午在机场还车后赶飞机,从西宁飞到敦煌,到敦煌市区的时候是下午4点过。在飞机上可以看到敦煌这边周围都是荒漠隔壁,只有沿着市区发展出来的一片片“绿洲”,这也是甘肃很多市的一种特色。
在酒店休息整顿后时间还比较充足,于是我们先去鸣沙山。鸣沙山以沙动而响为名,面积有200平方公里。进入景区的门票是55/人,大哥一直好奇为什么售票大厅写的是110,甚至想排队专门去问问。在进了进去后,看到了门口有一个讲解我就知道大哥想要干什么了。在请了讲解后,讲解问了我们进来的票价,才说现在还是按照淡季来收费的,所以是半价票。
在讲解了前面的一个城楼后,我们又买观光车进月牙泉。我一开始以为沿途有景点,还想先走进去再买票回来。坐在观光车上有一段能够看到成群的骆驼队,在那个点位拍照能够得到很好的效果,可惜的是等我掏出相机的时候已经晚了,就没有拍到。讲解带着转的这一圈感觉没有什么好写的,直接快进到爬沙丘,在爬沙丘之前拍了一下芦苇丛对面的沙丘。
上沙丘的有路有两条景区设置的路,放了一些木板在上面以降低压强方便爬上去。我们不想在梯子上一个挨着一个的爬上去就选择了另外一边没有梯子的地方上去。在月牙 ...
毕业行·青海
7月29日(Day.06)结束了三天的隔离,虽说隔离这几天感觉可以自己偷偷润了,但是考虑到还是在别人地盘上就别瞎搞了,万一被整个活赋个黄码到处都没法去。
这一天上午不太想出去找吃啥,还是点了个外卖随便吃点。然后中午等f1ag大哥来西宁,后面写的话就一直写大哥了,在博客里面带上名字老感觉有些许奇怪。本来一开始青甘环线是在群里叫了四个人的,其他两个人后面时间不凑巧也就没法来了。然后只有f1ag大哥一个人开车,一天也没法跑太远,所以我们就放弃了跑青甘大环线的计划。后面商量了一下只能在青海走四天的小环线之后直接飞去敦煌,去看甘肃那边剩下的几个景点。青甘大环线全长2200km,一大部分时间是在赶路,所以是可以放弃中间的路程的,不过现在想的话,未来如果有机会想再跑一趟青甘大环线。
事先问了下酒店能不能晚点到下午2点退房,因为大哥12:30到西宁,半个小时的时间应该没法办完租车手续,并且开车过来。酒店老板说目前过来旅游的比较多,所以最多只能到下午1点,如果要加时间的话只能开钟点房。对比了一下之后还是只能去楼下的王府井广场找个咖啡厅坐着等大哥过来。
大哥过来之后就先去了KFC,坐了一上午高铁也没吃东 ...
毕业行·武汉
时间到达7月21日的时候,手头的事情做的差不多了,所以也开始我这趟所谓的毕业旅行了。
第一站是湖北武汉。
上一次来到武汉还是在四年前,那应该是高考刚过没几天,当时在通过了几所学校的自主招生初试后选择了华科。
所以和初中同学约好了一起去一趟,很可惜的是那个时候没钱去玩儿,唯一的印象就是在华科面试和在欢乐谷玩了两个项目。其余的时间就是在酒店颓废,最大的原因是高中刚毕业没钱,也不想太过度花家里的钱,所以很多地方也没有去成。
也是在四年前到达武汉的那个晚上诉说了自己的几年心情,很可惜由于曾经错误的选择导致的非预期的结果,不过回想起来确实草率了一些。
这一次首先选择到武汉是为了见一见本科认识的一位学长,他目前在华科读研,也就是上一篇博文所说的一起组队参加信安大赛的学长。
本来原定计划是还要去一趟浙江找另外一个学长,也算是对我大学生活影响比较大的一位,可是由于疫情的原因还是尽量缩短行程,未来再找时间去了。
7月21日 (Day.01) 从成都出发,半夜到达武汉。武汉天河机场候车的地方比较奇怪,转了一圈没有找到可以等网约车的地方。然后坐了个黑车当了次被宰的肥羊,12km的路要了我100。以前没有 ...
Epilogue/Prologue
姑且在毕业/开学之际写点东西
从前就喜欢在某个阶段完成的时候写点东西记录,最开始应该是在高一那一年开始写年度总结这一类的。然后高三毕业的时候也写了些东西,不过那个时候还没有博客,都是扔在空间里面。前两年的我还多少有一些分享欲,一个是因为确实只是单纯地想分享一下自己的生活,另外一个是那个时候还有值得我去分享自己的生活的人。到了现在之后,我这种分享的欲望开始减少了,一方面是越发觉得自己发的一些东西带了一份炫耀的味道,多少可能会带来别人的不快吧,所以后面在空间或者朋友圈发的东西越来越少了。有一两个经常交心的人能够分享一些东西也足够了。
四年前的这个时候我应该和班上的人吃完饭了,然后和同学们告别之后回到了老家。我完全忘记了那个时候我为什么这么急着回去,我还记得我在路上看到那个仍然亮着灯但是依然不能回去的教室,只能在车里拍了一张照片。然后想着未来十几天后或许我能够在出分之后自信地选择任何一个她能选择的学校,可惜到后面天不遂人意。今天有人问我四年前考完英语是什么感受,我回想起来没有什么感受,在面对充满了无限可能性的未来的时候是不能有什么太多的想法的,只能默默地接受即将到来的一切。在十几天后我得 ...