爱意满满的作品展示区。
bydmm

[Golang] Encryptcard - 区块娘 - 使用区块链的计算力工作证明去挖 SRR,会产生怎么样的火花?

  •  4
     
  •   bydmm ·
    bydmm · Dec 15, 2017 · 5601 views
    This topic created in 3244 days ago, the information mentioned may be changed or developed.

    Encryptcard - 区块娘

    使用区块链的计算力工作证明去挖 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"
    }
    

    Version

    区块娘版本,不同版本的区块可能挖矿难度不一样,核心算法也不同

    PubKey

    用户公钥(yue 四声)

    Timestamp

    卡被挖出的时间戳

    RandNumber

    随机数,某个时间戳内为了多次重试,没有时间戳就无法挖卡了

    Hard

    难度系数,

    CardID

    CardID = 哈希(Version + PubKey + Timestamp + RandNumber + Hard)

    任何人都可以通过这个验证这张卡的真实性,到底是不是挖出来的,还是随便乱写的。

    这个也算是这个挖卡概念的技术核心,控制了出卡率只和用户的硬件水平有关。

    假设 CardID 为:15c9c6c3afb2b2ff612c5ea37b563c50dac4e95d7a93695bc5d680000000199

    • 0000000 基础难度系数,0 越多总体的难度提升(这个位数,不同的版本可能会变)

    • 001 卡 id,设定为 0 越多卡越稀有, 这是一张 SSR

    • 9 攻击, 纯属娱乐,未来对战系统可以自行实践

    • 9 防御,纯属娱乐,未来对战系统可以自行实践

    按照设想,挖卡程序只负责让卡有序产生,各种各样的应用可以根据这个卡的属性去自行设计任何游戏。

    算是个神奇的开源社区的设想?

    PS: 缺点是现在的 hash 算法 sha256 已经被 ASIC 矿机给优化。。但是我想那群挖币的应该不至于有空挖这个。。

    PS2: 如果矿机挖这个,那么说明挖这卡的价值要大于挖比特币。。。

    Signature

    普通的数字签名

    首先是拥有者对卡(区块)签名

    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)

    由于这个项目只是区块,不是链,也没有全局分布式账本,所以一张卡只允许交易一次了。。

    因为第二次交易这张卡,很明显需要第一个用户的私钥,那不太现实。。。

    Supplement 1  ·  Dec 15, 2017
    ![]( https://image.iqing.in/show.gif)

    哈哈,SSR 写错了,还不让编辑!
    Supplement 2  ·  Dec 15, 2017

    鸣谢

    动画生成:

    https://github.com/pjobson/movie2ascii

    本项目可以将视频转为字符(用到了jp2a+ffmpge)

    https://github.com/jteeuwen/go-bindata

    本项目可以把资源文件,也就是动画,作为二进制资源打包到项目里

    Supplement 3  ·  Dec 22, 2017
    新版本采用区块链技术,使用中心化认证完成区块链冷启动。

    后期可以改成分布式 P2P 的,数据类型和架构无关
    30 replies  •  2017-12-26 09:41:33 +08:00
    ety001
    ety001
    Dec 15, 2017
    1
    SRR 是啥?
    Thiece
    Thiece
    Dec 15, 2017
    2
    持续关注
    timwei
    timwei
    Dec 15, 2017
    3
    SSR 笔误吧

    SSR 现已泛指行动游戏中的稀有转蛋奖品
    bydmm
    bydmm
    OP
    Dec 15, 2017
    4
    ```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},
    }
    ```

    来个欧皇,凑齐一套撒!
    dangge
    dangge
    Dec 15, 2017
    5
    居然还抄了 fgo 的抽卡动画。。。
    关注一下看怎么实现的。
    i4oolish
    i4oolish
    Dec 15, 2017
    6
    以后会不会有一种基于区块的分布式存档技术,用户存档不需要完全存在服务器端,而是也放一份在本地,服务器根据签名机制可以信任这份存档,并且加载数据

    这个目前不是已经有了吗,什么 sc,还是 blk 来着
    timwei
    timwei
    Dec 15, 2017
    7
    ANSI 动画真是 666
    sennes
    sennes
    Dec 15, 2017
    8
    挖了两本《微积分学教程》哈哈
    bydmm
    bydmm
    OP
    Dec 15, 2017
    9
    @sennes 最稀有的是 0 和 42,加油。根据计算掉率为 0.2%
    CatCode
    CatCode
    Dec 15, 2017
    10
    《编译原理技术和工具》: 屠龙之术不在乎有无龙可屠
    23333333
    CatCode
    CatCode
    Dec 15, 2017
    11
    Win10 上动画没有,是我的问题嘛?
    bydmm
    bydmm
    OP
    Dec 15, 2017
    12
    @CatCode powershell 才能看到动画,而且最新版因为挖的太快,暂时没动画,你可以下 https://github.com/bydmm/encryptcard/releases/tag/v0.2
    Enivel
    Enivel
    PRO
    Dec 15, 2017
    13
    已经这么难挖了嘛 挂了 20 多分钟了 还是努力挖掘中
    bydmm
    bydmm
    OP
    Dec 15, 2017
    14
    @LevineChen 抱歉,老版本的随机数产生器写错了。https://github.com/bydmm/encryptcard/releases/tag/v0.5
    Enivel
    Enivel
    PRO
    Dec 16, 2017 via iPhone
    15
    @bydmm ....挂了一个来小时了
    cctvsmg
    cctvsmg
    Dec 16, 2017
    16
    赞一个,楼主有执行力,这才是 v2 该有的帖子
    AshesFish
    AshesFish
    Dec 16, 2017 via Android
    17
    大佬
    anasplrt34
    anasplrt34
    Dec 16, 2017
    18
    你这是扶她狗的抽卡召唤么 ww
    bydmm
    bydmm
    OP
    Dec 17, 2017 via iPhone
    19
    @anasplrt34 视频转的字符画。

    似乎有 i7 大佬凑齐一套了
    cocona
    cocona
    Dec 17, 2017 via iPhone
    20
    发现了用公司 CDN 当图床的大佬
    ichirou
    ichirou
    Dec 18, 2017
    21
    mysql 从入门到跑路 233
    bydmm
    bydmm
    OP
    Dec 18, 2017 via iPhone
    22
    @cocona 嘘…
    kwkwkkk
    kwkwkkk
    Dec 19, 2017
    23
    还差 1 个 27.。。。。
    kwkwkkk
    kwkwkkk
    Dec 19, 2017
    24
    集齐全套。。。。
    ichirou
    ichirou
    Dec 19, 2017
    25
    0,1,27 脸啊
    heidan
    heidan
    Dec 20, 2017
    26
    有没有兴趣 商业化?
    Chrics
    Chrics
    Dec 22, 2017
    27
    @bydmm 服了服了,舅服你
    Chrics
    Chrics
    Dec 22, 2017
    28
    卡属性自定义这点,还有待商榷。是不是加一个根据时间戳签名生成的算法,进行属性分配?
    bydmm
    bydmm
    OP
    Dec 22, 2017
    29
    @Chrics 新版(在另一个分支上)改成区块链了,中心化认证,多人抢卡。

    卡属性应该读取整个区块的哈希值,然后根据一个算法去生成,再搞下去我感觉我就可以云养美少女了。

    (还能百合生孩子?)
    ichirou
    ichirou
    Dec 26, 2017
    30
    脸黑啊,0 还没出来。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5330 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 60ms · UTC 01:25 · PVG 09:25 · LAX 17:25 · JFK 20:25
    ♥ Do have faith in what you're doing.