使用区块链的计算力工作证明去挖 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 Enivel 2017-12-15 23:00:06 +08:00 已经这么难挖了嘛 挂了 20 多分钟了 还是努力挖掘中 |
14 bydmm OP @LevineChen 抱歉,老版本的随机数产生器写错了。https://github.com/bydmm/encryptcard/releases/tag/v0.5 |
![]() | 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 还没出来。。 |