使用区块链的计算力工作证明去挖 SRR,会产生怎么样的火花?
本项目使用 Golang 编写,参照了比特币白皮书的内容,只实现了区块,但是没有实现链。
本项目验证了比特币区块的产生和验证技术,并将其应用到了喜闻乐见的抽卡环节中。
用户可以通过挂机的方式获得卡片,比比谁的 CPU 更强
PS: 看看代码你就会明白,其实工作证明也是有运气的成分的。即使是比特币,只要你特别欧洲,你也是有概率用普通电脑几分钟就挖到的。只是这个概率嘛。。。。
https://github.com/bydmm/encryptcard
新版本都会发布在 releases 里的: https://github.com/bydmm/encryptcard/releases
计算力工作证明 ✓
私钥和公钥的产生 ✓
数字签名 ✓
交易(✗)
抽卡动画 ✓
登场台词 ✓
在线验证(✗)
以后会不会有一种基于区块的分布式存档技术,用户存档不需要完全存在服务器端,而是也放一份在本地,服务器根据签名机制可以信任这份存档,并且加载数据。
这样做有一些可能的好处:
换代理商之后,用户可以自主上传存档,而不会出现被上家公司拒不交出存档的问题。
一些单机游戏为了防破解做了全程联网,这样很影响游戏体验。那能不能将存档放在本地,但是由服务器商签名,这样即使被破解了,也无法存档。
刀剑神域这样的跨游戏的存档实现,比如用户至少可以继承自己的人物名称和捏脸设定之类的,不过具体的继承内容的决定权在网游开发商。
{
"Version": "v0.0.1",
"PubKey": "-----BEGIN RSA PUBLIC KEY-----\nMIIBIjANB.......pXBzV4QOMxBl5C\nrwIDAQAB\n-----END RSA PUBLIC KEY-----\n",
"Timestamp": "1513263844677925384",
"RandNumber": "725",
"Hard": "4",
"CardID": "35d859ed1f30d9e19b76b120ca7d706506edfdd35ed7c88feafccb0003601050",
"Signature": "8c79aa73e105fad3479......eb5b0f2a1aa5e2493a1"
}
区块娘版本,不同版本的区块可能挖矿难度不一样,核心算法也不同
用户公钥(yue 四声)
卡被挖出的时间戳
随机数,某个时间戳内为了多次重试,没有时间戳就无法挖卡了
难度系数,
CardID = 哈希(Version + PubKey + Timestamp + RandNumber + Hard)
任何人都可以通过这个验证这张卡的真实性,到底是不是挖出来的,还是随便乱写的。
这个也算是这个挖卡概念的技术核心,控制了出卡率只和用户的硬件水平有关。
假设 CardID 为:15c9c6c3afb2b2ff612c5ea37b563c50dac4e95d7a93695bc5d680000000199
0000000 基础难度系数,0 越多总体的难度提升(这个位数,不同的版本可能会变)
001 卡 id,设定为 0 越多卡越稀有, 这是一张 SSR
9 攻击, 纯属娱乐,未来对战系统可以自行实践
9 防御,纯属娱乐,未来对战系统可以自行实践
按照设想,挖卡程序只负责让卡有序产生,各种各样的应用可以根据这个卡的属性去自行设计任何游戏。
算是个神奇的开源社区的设想?
PS: 缺点是现在的 hash 算法 sha256 已经被 ASIC 矿机给优化。。但是我想那群挖币的应该不至于有空挖这个。。
PS2: 如果矿机挖这个,那么说明挖这卡的价值要大于挖比特币。。。
普通的数字签名
首先是拥有者对卡(区块)签名
Signature = 签名函数(private_key, CardID)
交易者验证这张卡是不是真的来自于拥有者
CardID = 验证函数(PubKey, Signature)
{
"pubkey": "1ccfce1ed647ec3b12c398f4791a1adb3285cfff85ce7d382362c321a1a1df2",
"timestamp": 1974545345345,
"randNumber": 6653,
"cardBlock": "15c9c6c3afb2b2ff612c5ea37b563c50dac4e95d7a93695bc5d6800000009004",
"signature": "dsfsdf34515c9c6c3afb2b2ff612c5ea37b563c50dac4e95d7a93695bc5d6800",
"ownerPubkey": "1ccfce1ed647ec3b12c398f4791a1adb3285cfff85ce7d382362c321a1a1df2"
}
交易过的卡多一个字段:ownerPubkey
signature = 签名函数(创造者的 private_key, (ownerPubkey + CardID))
ownerPubkey + cardBlock = 验证函数(pubkey, signature)
由于这个项目只是区块,不是链,也没有全局分布式账本,所以一张卡只允许交易一次了。。
因为第二次交易这张卡,很明显需要第一个用户的私钥,那不太现实。。。
动画生成:
https://github.com/pjobson/movie2ascii
本项目可以将视频转为字符(用到了jp2a+ffmpge)
https://github.com/jteeuwen/go-bindata
本项目可以把资源文件,也就是动画,作为二进制资源打包到项目里
1
ety001 2017-12-15 14:15:30 +08:00
SRR 是啥?
|
2
Thiece 2017-12-15 14:17:41 +08:00
持续关注
|
3
timwei 2017-12-15 14:18:56 +08:00
SSR 笔误吧
SSR 现已泛指行动游戏中的稀有转蛋奖品 |
4
bydmm OP ```go
// 0 和 27 最稀有,越靠近两边越稀有 var CardPrototypes = map[int]CardPrototype{ 0: CardPrototype{ID: 0, name: "Zero", Lines: "我是开始,我是结束,我是阿赖耶,我是真理之门,我是一切的根源,我,是 Zero", rarity: 5}, 27: CardPrototype{ID: 27, name: "42", Lines: "宇宙的奥秘,从此揭开", rarity: 5}, 1: CardPrototype{ID: 1, name: "新桓结衣", Lines: "我不是你的老婆", rarity: 3}, 26: CardPrototype{ID: 26, name: "樱宁宁", Lines: "CPP 又崩溃啦", rarity: 3}, 2: CardPrototype{ID: 2, name: "《计算机程序的构造和解释》(SICP)", Lines: "做完我的习题,再说你读过", rarity: 4}, 3: CardPrototype{ID: 3, name: "《黑客与画家》", Lines: "先实现一门语言,然后再开始实现功能。", rarity: 4}, 4: CardPrototype{ID: 4, name: "《代码大全》", Lines: "在挡子弹这件事情上,我很有自信", rarity: 4}, 5: CardPrototype{ID: 5, name: "《设计模式》", Lines: "四老外激动地站了起来", rarity: 4}, 6: CardPrototype{ID: 6, name: "《 Unix 网络编程》", Lines: "万物皆文件", rarity: 4}, 7: CardPrototype{ID: 7, name: "《 TCP/IP 详解》", Lines: "01111110", rarity: 4}, 8: CardPrototype{ID: 8, name: "《重构》", Lines: "写好测试,敏捷的重构你的微服务吧", rarity: 3}, 9: CardPrototype{ID: 9, name: "《编译原理技术和工具》", Lines: "屠龙之术不在乎有无龙可屠", rarity: 4}, 10: CardPrototype{ID: 10, name: "《 C++ Primer 》", Lines: "上个号称要七天精通 C++的人造出了时光机", rarity: 3}, 11: CardPrototype{ID: 11, name: "《 Python 基础教程》", Lines: "人生苦短,我用大蟒蛇", rarity: 3}, 12: CardPrototype{ID: 12, name: "《 Thinking in Java 》", Lines: "老铁,来杯爪哇咖啡么", rarity: 3}, 13: CardPrototype{ID: 13, name: "《七天学会 HTML 》", Lines: "HTML 是宇宙最好的语言", rarity: 3}, 14: CardPrototype{ID: 14, name: "《 MYSQL 从入门到跑路》", Lines: "DROP TABLE users;", rarity: 3}, 15: CardPrototype{ID: 15, name: "《 React 中文指南》", Lines: "尤雨溪给你多少钱?我马克扎波给你双倍", rarity: 3}, 16: CardPrototype{ID: 16, name: "《 PHP 和 MySQL Web 开发》", Lines: "我不是针对谁,我是说...", rarity: 3}, 17: CardPrototype{ID: 17, name: "《 Web 开发敏捷之道》", Lines: "听说硅谷的红宝石必须跑在轨道上", rarity: 3}, 18: CardPrototype{ID: 18, name: "《从 0 到 1 》", Lines: "作为村里唯一可以卖意大利炒面的餐馆,在几万亿的餐饮市场里我所向无敌", rarity: 3}, 19: CardPrototype{ID: 19, name: "《禅与摩托车维修艺术》", Lines: "你们程序员能不能不要再围观我修车了,该死,我说的是摩托车", rarity: 3}, 20: CardPrototype{ID: 20, name: "《复变函数》", Lines: "正在对你进行傅里叶展开", rarity: 4}, 21: CardPrototype{ID: 21, name: "《线性代数》", Lines: "He is the one", rarity: 4}, 22: CardPrototype{ID: 22, name: "《微积分学教程》", Lines: "抑制了房价快速上涨的趋势", rarity: 4}, 23: CardPrototype{ID: 23, name: "《数学分析》", Lines: "少年,你渴望力量吗?", rarity: 4}, 24: CardPrototype{ID: 24, name: "《实变函数》", Lines: "少年,你渴望力量吗?", rarity: 4}, 25: CardPrototype{ID: 25, name: "《泛函分析》", Lines: "少年,你渴望力量吗?", rarity: 4}, } ``` 来个欧皇,凑齐一套撒! |
5
dangge 2017-12-15 15:05:30 +08:00
居然还抄了 fgo 的抽卡动画。。。
关注一下看怎么实现的。 |
6
i4oolish 2017-12-15 15:09:19 +08:00
以后会不会有一种基于区块的分布式存档技术,用户存档不需要完全存在服务器端,而是也放一份在本地,服务器根据签名机制可以信任这份存档,并且加载数据
这个目前不是已经有了吗,什么 sc,还是 blk 来着 |
7
timwei 2017-12-15 15:26:03 +08:00
ANSI 动画真是 666
|
8
sennes 2017-12-15 16:36:19 +08:00
挖了两本《微积分学教程》哈哈
|
10
CatCode 2017-12-15 20:03:47 +08:00
《编译原理技术和工具》: 屠龙之术不在乎有无龙可屠
23333333 |
11
CatCode 2017-12-15 20:04:12 +08:00
Win10 上动画没有,是我的问题嘛?
|
12
bydmm OP @CatCode powershell 才能看到动画,而且最新版因为挖的太快,暂时没动画,你可以下 https://github.com/bydmm/encryptcard/releases/tag/v0.2
|
13
LevineChen 2017-12-15 23:00:06 +08:00
已经这么难挖了嘛 挂了 20 多分钟了 还是努力挖掘中
|
14
bydmm OP @LevineChen 抱歉,老版本的随机数产生器写错了。https://github.com/bydmm/encryptcard/releases/tag/v0.5
|
15
LevineChen 2017-12-16 00:01:53 +08:00 via iPhone
@bydmm ....挂了一个来小时了
|
16
cctvsmg 2017-12-16 02:31:54 +08:00
赞一个,楼主有执行力,这才是 v2 该有的帖子
|
17
AshesFish 2017-12-16 10:48:24 +08:00 via Android
大佬
|
18
anasplrt34 2017-12-16 23:37:23 +08:00
你这是扶她狗的抽卡召唤么 ww
|
19
bydmm OP |
20
cocona 2017-12-17 17:36:58 +08:00 via iPhone
发现了用公司 CDN 当图床的大佬
|
21
ichirou 2017-12-18 13:38:14 +08:00
mysql 从入门到跑路 233
|
23
kwkwkkk 2017-12-19 09:41:57 +08:00
还差 1 个 27.。。。。
|
24
kwkwkkk 2017-12-19 16:59:52 +08:00
集齐全套。。。。
|
25
ichirou 2017-12-19 17:05:05 +08:00
0,1,27 脸啊
|
26
heidan 2017-12-20 15:39:16 +08:00
有没有兴趣 商业化?
|
28
Chrics 2017-12-22 09:55:42 +08:00
卡属性自定义这点,还有待商榷。是不是加一个根据时间戳签名生成的算法,进行属性分配?
|
29
bydmm OP |
30
ichirou 2017-12-26 09:41:33 +08:00
脸黑啊,0 还没出来。。
|