如何避免无意义的区块链项目
2018-02-07 15:07
225 查看
目录
1.写在前面2.避免无意义的区块链项目八个要点
2.1 数据库
2.2 多节点
2.3 缺乏信任
2.4 非中介化
2.5 交易互动
2.6 设置规则
2.7 选择你的验证器
2.8 备份你的资产
3.结论
4.技术交流
1. 写在前面
现在的区块链火爆程度众所周知,产品名字前面加个区块链,股票大涨,扎克伯格发条消息说最近和一些朋友聊天,总有人说,哎,我也没赚多少钱,就赚了五六百万,然后大家都说,装逼,给我滚。
最近和朋友聊天,大家都说,别睡觉了,太浪费,好好做点事,这是一个改变社会规则,财富重新分配的机会。
现在身边币圈富豪云集,就连我们孔壹学院1801班级里面身家几百万的比比皆是,这是一个疯了的时代,这是一个财富重新分配的时代,没错,这就是区块链时代
- 下一代互联网的开始。
币圈有一句话,叫币圈一天,人间一年,在这个圈子里,连呼吸都觉得浪费时间。
前面我提到传统项目改个名字,加个区块链,就股票大涨,可见疯狂程度。从这里面我们应该能感知两点:
① 传统行业为了圈钱,不管三七二十一,先改个名字,圈点钱,剩下的以后再说。
② 从很多这样的案例中不难看出,参与进来的韭菜们的不专业,他们根本不对项目进行任何的分析,只要看见项目里面有区块链三个字,果断
all in
在这里,我呼吁两点:
① 禁止浮躁,踏踏实实做有价值的区块链产品,探索区块链未来,推进社会进步,我始终坚信,有价值的产品才会是大海里面最终沉淀下来的那一滴珍珠。
② 对于参与数字资产的投资或者投机者们应该时时告诫自己,你是否会是那个被割得连内裤都没有的韭菜呢。投机需谨慎,入场请三思。
2. 避免无意义的区块链项目八个要点
其实对于投资者来说,尤其是韭菜们,他们根本不懂项目的好坏,那么我们作为项目发起方,在做一个区块链项目的时候,是否是为了区块链而区块链,还是为了区块链+一个与区块链毫无相干的项目呢,那么一个好的区块链项目应该满足哪些条件呢,可以以下面几个点作为参考,看自己的项目是否符合你心目中的样子。2.1 数据库
这是第一条规则。区块链是共享数据库的技术。所以你需要知道为什么你要使用数据库,我的意思是一个结构化的信息库。这可以是一个传统的关系数据库,其中包含一个或多个电子表格式列表。或者它可以是更时髦的NoSQL数据库,它更像一个文件系统或字典。(在理论上,
NoSQL数据库只是关系数据库的一个子集)。
金融资产的分类账可以自然地表示为数据库表,其中每一行表示一个特定实体拥有的一种资产类型。每行有三列,包括:
① 所有者的标识符,例如账号
② 资产类型的标识符,例如
USD或
AAPL
③ 该资产持有的数量所有者
数据库通过
交易进行修改,
交易代表对数据库进行的一系列更改,必须整体接受或拒绝。例如,在资产分类帐的情况下,从一个用户到另一个用户的付款由一个交易表示,该交易从一行中扣除适当的数量,并将其添加到另一个。
2.2 多节点
这个很简单,区块链是针对具有多个节点的数据库技术。换句话说,需要有多个实体来生成修改数据库的事务。你知道这些实体是谁吗?在大多数情况下,修改数据库的人还将运行节点,该节点保存数据库的副本并以点对点的方式将交易传递给其他节点。但是,事务也可能由不是自己运行的节点的用户创建。考虑一个支付系统,它由一小部分银行共同维护,但在移动设备上拥有数百万的终端用户,只与他们自己银行的系统进行通信。
2.3 缺乏信任
现在是第三条规则。如果有多个实体正在写入数据库,那么这些实体之间也需要有某种程度的不信任。换句话说,区块链是具有多个不信任节点的数据库技术。你可能会认为,不信任只会出现在不同的组织之间,比如市场上的银行交易或供应链中的公司。但它也可以存在于一个单一的大型组织中,例如部门之间或不同国家的业务之间。
我不信任的意思是什么?我的意思是一个用户不愿意让另一个用户修改他拥有的数据库数据。同样,当阅读数据库的内容时,一个用户不会接受另一个用户报告的
数据,因为每个用户都有不同的经济或政治动机。
2.4 非中介化
所以,到目前为止所定义的区块链,是使多个不信任节点达成共识的数据库。这个问题已经有了一个众所周知的解决方案:可信中介。也就是说,所有节点都信任的人,即使他们不完全相互信任。事实上,世界上充满了这种性质的数据库,比如银行账户的账目。您的银行控制数据库,并确保每笔交易都是有效的,并由客户进行资金授权。无论你多么礼貌地问,你的银行都不会让你直接修改数据库。区块链通过使具有多个不信任的节点的数据库能够被直接修改来消除对可信中介的需求。没有中央机构来验证交易和认证他们的来源。相反,交易的定义扩展到包括授权证明和有效性证明。事务因此可以由维护数据库副本的每个节点独立验证和处理。
但是你需要问的问题是:你想要还是需要这种去中介?考虑到你的使用情况,有一个维护一个权威数据库并充当交易认证的中央机构有什么问题吗?选择基于区块链的数据库而不是可信中介的好的理由可能包括成本更低,交易更快,自动对账,新的监管无法简单的找到合适的中介。
2.5 交易互动
因此,区块链对于多个不相互信任的节点共享的数据库以及直接修改数据库的人员是有意义的。但是这还不够。在这些节点创造的交易之间存在某种交互的情况下,区块链才真正发光。互动是什么意思?从最充分的意义上说,这意味着由不同节点创造的交易往往相互依赖。例如,假设
Alice向
Bob发送一些资金,然后
Bob发送一些给
Charlie。在这种情况下,
Bob的交易依赖于
Alice的交易,在没有首先检查
Alice的交易的情况下,并且没有办法验证
Bob的交易。由于这种依赖关系,事务自然地属于一个共享数据库。
进一步来说,区块链的一个很好的特点是交易可以由多个节点共同创建,而没有任何一方面临风险。这是允许交付与支付结算在区块链上安全执行,而不需要可信中介。
对于来自不同节点的交易即使彼此保持独立也彼此交叉相关的数据,也可以做出一个很好的例子。一个例子可能是共享身份数据库,其中多个实体验证消费者身份的不同方面。虽然每个这样的认证都是独立的,但是区块链提供了一种将所有东西结合在一起实现统一有用方法。
2.6 设置规则
这不是一个真正的条件,而是前面几点的必然结果。如果我们有一个由多个节点直接修改的数据库,而这些节点并不完全相互信任,那么数据库必须包含嵌入的规则来限制事务的执行。这些规则与传统数据库中出现的约束条件有着根本的区别,因为它们涉及到转换的合法性,而不是数据库在特定时间点的状态。网络中的每个节点都会根据这些规则来检查每个事务,而那些失败的事务将被拒绝并且会被中断。
资产分类帐包含这种类型的规则的一个简单示例,以防止事务处理无形中创建资产。规则规定,每笔交易前后,每个资产的总量必须相同。
2.7 选择你的验证器
到目前为止,我们已经描述了一个分布式数据库,其中事务可以在很多地方发起,以点对点方式在节点之间传播,并且由每个节点独立验证。区块链的工作就是成为权威性的最终交易日志,所有节点都可以在其内容上达成一致。为什么我们需要这个日志?首先,它使新增加的节点能够从头开始计算数据库的内容,而不需要信任另一个节点。其次,它解决了由于系统停机或通信故障,一些节点可能错过某些事务的可能性。没有事务日志,这会导致一个节点的数据库与其他节点的数据库发生分歧,从而破坏共享数据库的目标。
第三,两笔交易可能发生冲突,只有一笔交易可以被接受。一个典型的例子是将同一资产发送给两个不同的收件人的双重花费。在没有中央权威的对等数据库中,节点对于接受哪个事务可能有不同的意见,因为没有客观的正确答案。通过要求交易在区块链中确认,我们确保所有节点都在相同的决策上进行最终验证。
最后,在
Ethereum风格的区块链中,事务的准确排序起着至关重要的作用,因为每个事务都会影响后续事务的发生。在这种情况下,区块链的作用是界定权威的代表,没有这个交易根本就不能处理。
区块链实际上是一个每个区块都包含一组确认为一个组的交易的区块的集合。但谁负责选择进入每个区块的交易?在那种适合企业应用的私有链中,答案是一组封闭的验证者(矿工),他们对他们创建的块进行数字签名。这种白名单与分布式共识方案的某种形式相结合,以防止少数验证者掌握住链条的控制权。
无论使用哪种共识方案,验证节点的功耗远远小于传统集中式数据库的拥有者。验证器不能伪造交易或违反其规则修改数据库。在资产分类账中,这意味着他们不能花他人的钱,也不能改变所代表的资产总量。尽管如此,验证者仍然可以通过两种方式不当地影响数据库的内容:
交易审查。如果足够多的验证人恶意串通,他们可以阻止特定交易在区块链中被确认,从而使其永久保持畅通。
偏见的冲突解决。如果两个交易冲突,创建下一个块的验证器决定在区块链中确认哪个交易,导致另一个被拒绝。公平的验证将是首先看到的交易,但验证者可以根据其他因素进行选择而不会泄露这一点。
由于这些问题,在部署基于区块链的数据库时,您需要清楚地了解验证者是谁以及为什么信任他们,如果不是共同的话。根据用例,验证者可以被选择为:
① 由单个组织控制的一个或多个节点
② 维护该链的核心组织组
③ 网络上的每个节点
2.8 备份你的资产
如果你认真看到这里,你可能已经注意到我倾向于把区块链称为共享数据库,而不是更常见的共享分类账。为什么?因为作为一项技术,区块链可以应用于远远超出追踪资产所有权的问题。任何拥有多个不信任用户的数据库都可以通过区块链实现,而不需要中央中介。例子包括共享日历,维基风格的协作和讨论论坛。
话虽如此,目前看来区块链主要是追踪金融资产流动和交易的人感兴趣的。我可以想到这样的两个原因:
① 金融部门正在回应像比特币这样的加密货币的(回想起来是微不足道的)威胁;
② 资产分类账是共享数据库的最简单和自然的例子,由多个不信任的实体创建的相互依赖的事务。
如果您确实希望将区块链用作资产分类账,那么您还需要回答另外一个关键问题:被移动资产的性质是什么?由此我不只是指现金或债券或提单,当然,这也是重要的。问题在于:谁代表区块链上代表的资产?如果数据库说我拥有10个单位的东西,谁能让我在现实世界中拥有这10个单位呢?如果我不能将区块链中的内容转换为传统物理资产,我该如何起诉?(以资产协议为例。)
答案当然会因用例而异。对于货币资产,可以设想托管银行以传统形式接受现金,然后将存款人的账户记入区块链分布式账本。在贸易融资中,信用证和提单将分别由进口商的银行和运输公司支持。而且在未来,我们可以想象公司债券首次发行直接发生在寻求融资的公司的区块链上。
3. 结论
正如我在介绍中提到的,如果你的项目不能满足这些条件中的每一个,你就不应该使用区块链。在前五种情况下,您应考虑以下情况之一:① 常规文件存储
② 集中式数据库
③ 主从数据库复制
④ 用户可以订阅的多个数据库。
如果你确实履行了前五项,还有工作要做。您需要能够根据数据库允许的事务来表达应用程序的规则。您需要确信可以信任谁作为验证者,以及如何定义分布式共识。最后,如果您正在创建共享分类帐,则需要知道谁将支持该分类帐代表的资产。
得到了所有的答案?恭喜,你已经有了一个真正的区块链使用案例。
4. 技术交流
区块链技术交流QQ群:348924182「区块链部落」官方公众号
原文地址: http://liyuechun.org/2018/02/05/Avoidingthepointlessblockchainproject/
相关文章推荐
- Unity开发项目应该一开始规划好哪些内容?如何避免后期巨坑?
- 1000多个项目中的十大JavaScript错误以及如何避免
- 如何设计一个成功的区块链项目?
- 在项目中,如何能够避免开发占用测试的时间?
- 如何避免adtbundle新建项目总是产生一个appcompat_v7和fragment_main.xml
- C++项目如何避免线程死锁 .
- 区块链如何才能避免未来主义的危险
- 专家会诊 如何避免人走项目"黄"
- 如何避免项目重复循环引用
- 监理如何避免项目中的冲突
- 如何避免软件项目的现场开发? 转自www.mypm.net
- 1000多个项目中的十大JavaScript错误以及如何避免
- 作为项目管理者如何避免项目的延期与执行过程中的加班问题
- 引用同一个项目中的类库,如何避免 goToDefinition时不能到达真正的定义类
- 项目经理如何避免降低软件质量
- 作为项目管理者如何避免项目的延期与执行过程中的加班问题
- 如何使用区块链开发一个落地项目?这位实战大牛手把手教会你
- 智能一代云平台(三十六):项目中如何做到避免传递依赖
- 1000 多个项目中的十大 JavaScript 错误以及如何避免
- 企业如何运用PRINCE2,避免项目失败——上海信息化培训中心