我的码农之路(一)

--学习的目的是让你能选择,而不是被选择

一、万事皆有因

    我于2017年6月从军队退役,在军队服役整20年(18岁参军入伍,可以计算一下我年龄有多大),且并没有从事IT相关的工作。由于2017年军队改革,确定会退役很多大龄人员(刚好我就是大龄人员,又不想退役后当一个一眼能看到头的且越难越难混尤其是不太适合我的公务员,所以必须先谋下后路,找一个工作谋生。思来想去,决定先当个码农当跳板,以后再设法转行。为什么一开始要选码农,是因为个人觉得它的起点和投入低(只需要一台电脑就行了),缘由就是如此。于是我作了一点小小的准备,就是计划把《Thinking in Java》第四版(英文版)再看一遍(其实这个第四版包括第三版我都看过几次,只是每次只看到一半就结束了),结果这次仍然是外甥打灯笼--照旧,退役时仍只看了一半(但也算是打了一点点理论基础)。然后我就退役了,新的生活开始了!

二、开学季

      退役后我回家休息了一个月,于8月4号去长沙我一个同学的一个小微IT公司混下经验,这里要感谢下我的那位龙同学。去的时候我的软件开发技能几乎为零,除了能用Java写一下HelloWorld,并在休息的一个月中照搬《分形算法与程序设计:Java实现》这本书中的代码做了几个分形图片外,其它的什么都不会。20年前大学学的东西当然全部是忘光了(那时还是学的basic,pascal)。刚好这时我同学公司跟北京一公司(linkjoy)合作的项目准备从cocos2d向unity2d转型,我和他一商量就先用Unity仿Dayz游戏做一个生存类的游戏(模仿是学习的第一步),顺便学习一下Unity。于是,一个大龄青年(其实是中年)在非IT专业出身(我本科是雷达工程、硕士是导航、制导与控制专业,听起来高大上),开发经验为零,不会汇编\c\c++\ c#\javascript\php及其它的golang\python等各种听说过或者未听说过的编程语言,从没听说过框架、数据库只听说过一个access的情况下下载了一个Unity3D软件,撸起袖子准备开干了。

仿的游戏叫DayZ,主要是我一个人在学习开发。在模仿过程中也遇到了一些困难,比如不规则图形的拼接(池塘),但最主要的就是随机地图问题。大地图中的简单地物好说,居民区的随机和道路、比较大的地物的产生困扰了我一些时间。经过我反复研究原游戏地图,发现随机其实是一定规则下的随机,把这些规则抽象出来事情就明朗了许多。于是,随机居民点和它们之间的道路、还有道路之间随机的湖泊我都做出来了。但是这时居民点内的众多建筑的随机组成和排列还是难点,为此我特意电话请教了一个华中科技大学计算机系的博导(专带博士后的专家,这里感谢曹博导的耐心解答),但是他也没有具体研究过随机地图的事,不过提到了英雄无敌这个游戏中的随机地图,说随机地图都是自己先确定一个规则,然后根据这个规则产生。英雄无敌我只玩过4,并且我在2003年玩过太多次了,熟悉的很,很显然玩过这个游戏的人年纪都比较大了。那里面的随机地图我知道,除了战役,里面的关卡地图内容生成是随机的,比如《狗日子》和《海洋政治》等。我就进一步问了下,有没有通常的一般规则呢?回答是规则应该没有通用的,都是根据自己游戏自己定义的。好吧,只能自己设计了,只是后来我还是没有设计出好的随机规则,就把它先搁置了起来。

这次学习中还遇到的一个麻烦的事情就是小地图的显示,小地图会显示大地图缩略图(当然居民点、道路和湖泊位置要准确)、并且还要保持人物在大小地图上同步移动。在我研究透了大地图随机问题之后,小地图生成也不是难事了。

当然,这次还学到了一些Unity中简单动画(不是骨骼动画),平滑跑动的处理(使用协程)等其它知识。

这期间同学的小公司有一些人员变动,有一个职员甲由于家庭原因离职了,后来又招了一个培训班出来的乙,乙态度不错,只是基础差了一点,两个星期试用之后也离职了。只有一个美女小姑娘丙一直在坚守岗位。再回到我这边,8月底,我觉得把这个仿Dayz做出来不知道什么时候了,也没有具体的开发计划。于是我就准备停下不做,计划离开了。刚好他们合作的新项目(小小航海士外传)启动,要招人(前面两个离职了),于是我同学推荐了我一下,然后北京linkjoy公司那边说是要看一下代码,我就把那个未完工的仿DayZ的工程发了过去(估计也没怎么看)。然后算是通过了。9月1号,在这个全国学生开学的日子里,我也是新生进入了开学季,加入了小小航海士外传项目,正式成为码农这个大学校的一名新生(这里再一次感谢我那个同学)。

这个未完工的仿DayZ工程一直保存在我的电脑中,它不仅仅是一个留念,以后如果有开发Unity2D,它仍然具有参考意义。

解决以太坊图片存储问题的技术探讨

作者:周朝晖

第一个真正的ERC721资产

先看看我们采用以太坊智能合约发行的协作纪念品:

This ia a medal of honor awards for Alpha Test of NaturalDAO.NaturalDAO Core Team Alpha Tester Alpha TestAlpha TestAlpha TestAlpha TestCommemorative NaturalDAO TokenSeptember 19th, 2019Tung Sau Chun Queena

它有什么创新?

与它有关的ERC721通证、图片、文字信息都在一个以太坊智能合约里!它很可能是迄今为止,第一个也是唯一一个真正的非同质性物品区块链资产。谜恋猫(Cryptokitties)因为猫的图片都在链下,算不上真正的区块链资产。

自然道纪念币图片的格式为可缩放矢量图形(Scalable Vector Graphics,SVG)。官方(W3C)的解释为:SVG is a language for describing two-dimensional graphics in XML [XML10XML11]. SVG allows for three types of graphic objects: vector graphic shapes (e.g., paths consisting of straight lines and curves), multimedia (such as raster images, video, and audio), and text. Graphical objects can be grouped, styled, transformed and composited into previously rendered objects.

之所以采用SVG图片,核心原因是因为它是由XML语言代码构成的,而代码可以直接保存到智能合约里。

Special tags of Commemorative NaturalDAO Token:

<description>This ia a medal of honor awards from Alpha Test of NaturalDAO.</description>
<honoree class="thonoree">Alpha Tester</honoree>
<ARTIST>Tung Sau Chun Queena</ARTIST>

你可以通过W3C了解它的技术规格:Scalable Vector Graphics (SVG) Tiny 1.2 Specification

另一个和SVG类似的技术是Canvas。两者的简单对比(中文):https://www.w3school.com.cn/html5/html_5_canvas_vs_svg.asp

Canvas甚至有了自己的游戏引擎:playcanvas

  • 启发

那么它们对区块链的数据存储有什么启发?

  1. 图片甚至整个游戏都应该以可读代码形式保存到智能合约里,可以很好地保护设计者和所有者的权利,保障通证或游戏的透明性。
    因为从比特币开始,区块链通证就已经是匿名的了——没有人确切地知道一个某个地址属于谁。而当中本聪丢失私钥之后,现在全世界都没有办法确认James Bilal Khalid Caan是不是中本聪——所以我个人并不认为区块链还有传统的隐私和版权保护概念,因为一切都与人的身份无关,直接用私钥控制就好了。而私钥永远都不应该被暴露!
    而更重要的问题,就是数据的所有权、使用权、收益权和透明性。
    如果把图片转换成SVG,即可以将其所有权、使用权、收益权用文字形式永久保存到智能合约里,通过智能合约的透明性,图片的所有权、使用权、收益权就完全不存在可争议的了。而同时,其可读性自然就更能够得到保障。
    我采用SVG而不是Canvas设计纪念币的原因是它的源代码有更好的易用性(accessibility,包括可访问、可读、可检索和可衍生)。而易用性与智能合约的公开透明相结合,就能更好地保证项目的可靠性,也使得大家能够更好地开放协作等等。
  2. 解决区块链数据存储需求,不再需要IPFS来存储数据。
    SVG和Canvas都可以存储在智能合约里,和IPFS存储相比,它的好处为:
    1. 不需要存储证明
      IPFS需要存储证明,每时每刻都要能证明存储的数据还完好无损,其难度可想而知。但我们知道,以太坊里面的交易数据,因为有共识机制和众多存储节点提供保障,就根本不需要存储证明。
    2. 拓展以太坊的应用范畴
      通过分片技术创新即可让以太坊承担存储。我们可以通过技术手段将不同的任务分配给不同的分片,譬如分片A专门存储图片(SVG和Canvas),分片B专门存储视频。不同种类的分片的每字节存储手续费不尽相同。
      如果深入探讨,我们应该能够完善这一存储技术。
    3. 通过技术拓展,采用更高效的手段,丰富其应用方法
      譬如它们可内置智能合约。又譬如SVG和Canvas都具有可交互性,那么我们通过技术拓展,可以让它们能够达到智能合约可交互性。这毫无疑问能大大拓展它们的应用价值。点击上面的图片,你可以体验到我做的简单的交互效果。
      另外XML也有很丰富的用途,如可以支持多语言自动切换(甚至可以为整个区块链领域开发出统一的多语言库),并且它本身还具有其它可拓展性。
  3. 标准化应用
    以太坊的分布式存储是重复率超高的,资源浪费严重,但它是可以通过新的技术改进,亦即新的技术规范,而解决好的。而SVG能让图片以素材形式保存,而文字内容可以一律用另一个合约保存。这样不光对应的智能合约,其图片素材的重复使用率也会得到极大的提升——譬如我们可以定义某种区块链标准勋章,全世界都能自由使用它。
    可想而知,我讲的这些不单适用于虚拟的NFT资产,这种模式也可以推广到工业设计领域。
  4. 它们是可衍生数据
    SVG 支持用 CSS 样式表将图形内容和图形样式分离。如果我们把CSS文件置于链下,则最终呈现的作品变得可以任意衍生。
    同样地,使用Javascript,也能使得HTML5 Canvas游戏里的道具,随意个性化。
    当然,衍生也可以利用智能合约在以太坊链上进行。
  5. 我们是不是可以构建出一个自组织图片系统(self-organized Picture System),或者叫混沌图片系统(Chaos Picture System)?因为这样的衍生通过简单的规则,配合图灵完备的智能合约对feedback的吸纳,它自身就是有创造力的,通过市场机制它也可能自然地发生evolution,世间万物的演化规律同样适用于它。

自然道获得GitBook的支持,使得本项目可以免费无限使用GitBook的所有资源。

在我们的调查中,我们发现GitBook是非常适合开源软件类项目的文档协作,以及开源书籍的编写和分享。因为GitBook的资源和Github是可以互相打通的。给个简单的例子:

  1. 我们可以在GitBook协作编写自然道的文档,通过域名docs.naturaldao.io,和网站衔接起来,也就是说通过这个域名,用户可以访问到GitBook里面的技术文档。
  2. 在GitBook里编写好的自然道的文档,可以直接同步到自然道在Github的代码基地:https://github.com/naturaldao/Docs-NaturalDAO

GitBook免费支持开源软件和非盈利项目。

我们对GitBook的慷慨表示诚挚的感谢!

我最近在跟很多朋友解释区块链发展的路径时,都会说:

DeFi从MakerDAO,到Compound,到PoolTogether……一环扣一环纵深发展,简直完美!

MakerDAO通过质押,得到“稳定币”Dai——Dai不是真正的稳定币,不过去中心化借贷平台Compound拯救了它!

然后去中心化乐透PoolTogether让大家眼前一亮!这个应用是这样玩的:

你到PoolTogether买张彩票,你付的币(DAI)就会被锁进一个智能合约里,PoolTogether把所有人买彩票的币都放到Compound上面去做借贷,等到彩票开奖结束后,所有借贷产生的利息都归中奖的那个人拥有,同时每个人都能拿回自己彩票的本金。

PoolTogether 第一轮活动才生成了 0.20 DAI 的利息。第二轮活动共售出 2875 张彩票,锁定 5 万余 DAI,奖金也才 203.04 DAI。第三、四轮奖金分别为355.36 DAI、247.90 DAI。

https://www.pooltogether.us/all-pools

1 DAI 约为 1 美元。毕竟才开始,还行吧。

但是:

  • 它很酷!不是吗?
  • 而且它是区块链独有的玩法!其它任何技术做不到!

还没等大家反应过来,PooTogether的迭代发生了。V2的特色:

  1. Automatic Pool Reentry(放一笔钱,可以无限循环自动玩) — the default path for your money is to stay in the pool and continue to have a chance to win. A winner is declared every 14 days, we’re calling this a “draw”.
  2. Enter The Pool at Anytime(随时参与) — You can now join the pool at anytime, when you join you will be eligible for the next draw but not the current draw. The funds are immediately deposited into Compound.Finance earning interest right away.
  3. Exit The Pool at Anytime(随时退出) — You can also leave the pool at anytime, when you leave the pool you will not be eligible for the prize awarded in that draw.

但在我看来,最有意义的是:

Unlocking The Power of Pooled Capital
We’re also launching a new pool contract that specifies a pre-determined winner for the interest earned. This will initially be built out to support philanthropic causes(慈善) but we anticipate more use cases being found. We’ll share more information on the launch partners for this new pool type as we approach the release.

https://medium.com/pooltogether/next-steps-for-pooltogether-b35052165c9c

PoolTogether让我快闪出巨大的应用场景和可能的未来:

  • 如果有百万人参与,它每年至少能让一两个人上天。
  • 未来的慈善,并不需要谁出钱——现在的慈善常常发生尴尬事,譬如刚捐了钱,发现转账多了一位数(在区块链的世界那就更尬),或者自己突然需要钱。
  • 我隐约感觉到未来的去中心化保险也初见端倪。
  • 它有成为杀手级应用的潜力。
  • 对于参与者来说,它就是一个落地应用,而且很好很靠谱。

但是且慢,DAI真的是靠谱的稳定币吗?

虽然MakerDAO抵押模式非极端情况也就并无大问题,但墨菲定律黑天鹅总是迟早的事。还有,MakerDAO年费率半年内从0.5% 暴涨到 20.5% 的决策机制令人诟病。

最后:应用打开,PoolTogether最好开源同步。

捐助资金交由自然道基金会(NaturalDAO Foundation)管理,目前三个创始成员通过Gnosis多签共同管理。如果您愿意协助,欢迎联系我们。
捐助资金的多重签名管理合约请点击此处查询

 

无论是支持自然道的开发,还是捐助自然道大学,还是其它意愿, 自然道基金会(NaturalDAO Foundation)都用同一个多签地址接收ETH。

捐助地址(目前仅支持ETH,我们将尽快部署稳定币NDAO):

0xAA4649D9829937C7288C0fbBD69Bc3762Fa62963

二维码:

请注意:

您的捐助将是匿名的。

 

多谢您的支持!

下级分类