沉浸在以太坊的开发中。 第0部分:无需区块链

当然,您中的许多人都想知道为什么您甚至特别需要区块链和以太坊。 也许有人走得更远,发现了许多美丽的特征:权力下放,透明,没有中介的信任,防盗。 太好了吧? 是的,但是...


当前形式的区块链仅适用于狭窄的任务,除了“为哇效果添加纳米技术”任务(对于此任务,您可以容纳任何东西)除外。 当然,您必须从某个地方开始,进行不同的实验来测试地面,以显示可以预期的需求,意外的死角,缺陷不如预期严重的地方。 但是有必要了解边界,以便有意识地决定在这种特殊情况下是否可以尝试越过边界。

顺便说一句,在所有方面,以太坊不是唯一的也不是最好的选择。 也许区块链恰好适合您的任务,但还有其他一些。 但是我们说“区块链”,意思是“以太坊”

让我们尝试描述区块链和智能合约的那些功能,这些功能使解决方案乍一看就无法实现甚至不可能实现。 我还要说的是,这些要点是概括的,因此从理论上讲,对于特定的用例,可能会有非常正常的解决方案。 因此,将此列表视为在开始项目之前需要解决的以太坊弱点。

另外,如果其中许多内容对您来说显而易见,请原谅。 正如实践所表明的那样,通常您首先必须与客户讨论这些事情。

1.高门槛


如果您的受众是普通用户,而不是区块链爱好者,那么只有一小部分人会开始使用您的应用程序。 想象一下:您不仅需要在节点上安装Metamask或Mist,而且还需要购买以太币,这首先也是一个不容易的过程。 也就是说,如果您的目标是最大程度地扩大受众范围,则以太坊尚不适合。 例如,仅根据智能合约开店很可能是个坏主意。
怎么办

  • 提供克服不便的好处
  • 针对“主题”受众
  • 如果不用于下一项,则可以通过将其放在后端来向用户隐藏区块链逻辑。

2.分散式集中化


尽管如此,区块链的优点是参与者无法彼此信任,但这只有在用户是其私钥的所有者的情况下才有可能。 然后,只有他才能在自己的地址上签署交易并执行各种操作。 在后端使用区块链逻辑会发生什么? 密钥是集中管理的,没有针对与用户不一致的事务的保护措施-这意味着您只需要信任服务器的完整性和安全性即可。 因此,例如,大多数加密货币交易所都使用加密货币进行操作,但它们没有使用与此相关的任何优势。
怎么办

  • 了解是否需要透明性和抗扰性,或需要操纵隐窝的能力。 如果不是这样,使用常规数据库会更便宜且更方便。
  • 思考和研究工作机制,以维护技术保证

3.所有数据都是公开的


无论如何编写智能合约,都可以在其中获取任何数据字段的值。 和交易历史。 因此,如果您写下可识别用户的内容(例如邮件或名称),则使该用户公开的所有内容。 最有可能在顶部进行某种加密。 在这种情况下,必须将其密钥存储在接收方,也就是说,用户必须再次将其数据委托给第三方。 因此,对于或多或少敏感的数据,普通私有存储可能更合理。 如果您要在区块链上达成协议,您可能会损失不止收益。
怎么办

了解智能合约逻辑是否需要私有数据。 如果是这样,请考虑处理散列而不是数据本身。

4.区块链不是超级计算机


可能会给人一种印象,即矿工正在投入巨大的力量来执行有用的计算,但是事实并非如此。 以防万一,我想澄清一下:以太坊的性能与嵌入式系统的性能更相似-资源有限,内存有限,“固件”(智能合约代码的字节数)有限。 因此,非关键计算应最大程度地从链下进行。 因此,在智能合约中,分析数据或执行加密的难度不大
怎么办

  • 不要将区块链用作计算器
  • 如果需要在区块链上进行控制的计算,则可以考虑oraclize中的计算功能

5.区块链不是通用存储


通常,您会听到请求将某些内容保存在区块链上的请求:信息或文档。 这里的问题很明显:首先,保存数据非常昂贵,其次,区块链不适合搜索,例如-您拥有一个映射(键-值),顺便说一句,它也为每条记录增加了价值,或者您必须通过蛮力搜索。 另外,没有权限管理。 因此,您不应该只是将数据库更改为区块链,重要的是要理解为什么原则上需要这样做。 对于文件,值得记住的是数据的公开性:如果您说保留指向IPFS的链接,那么每个人都可以看到它并可以下载其上的内容。 因此,如果您要将照片存储在区块链上,则应考虑原因。
怎么办

  • 通常,所需要做的只是保存一个散列以验证链外的内容
  • 仅保存智能合约逻辑所需的数据

6.将区块链链接到现实世界


区块链本身可以毫无问题地转移硬币/代币,但是如何转移为他们购买的东西呢? 即使是文件,如何在没有第三方的情况下确认其传输? 简短的答案:这不是很简单,因为我们假设双方都想互相欺骗,并且他们将需要进行大量检查,加密-解密,并且如果发生纠纷,那么您就离不开链下计算或仲裁员。 如您所知,对于实物产品或服务,由于必须输入大致说来已经收到货物的信息,所以一切都变得很复杂。 这个人不能是一个感兴趣的人,那么这就是我们必须再次信任的第三方。 然后我们的区块链解决方案以仲裁者的形式存在一个薄弱环节,并且由于我们信任他,所以为什么不委托其他所有人,比如说托管一个常规基地并付款。 在做任何事情之前,您必须明确回答这个问题。 也就是说,例如,您提供的在离线商店中交换折扣的令牌的含义,在我们个人看来,这令人怀疑
怎么办

清楚地回答自己为什么不适合使用集中式逻辑。 如果没有答案,请拒绝区块链。

7.没有用户错误保险


如果您错误地将钱汇到银行或破解了一个帐户,也就是说,可以选择写支票,则有时间取消或回滚交易。 在智能合约中,您无法手动执行代码未提供的操作。 同样,我们面临着引入一名仲裁员的需要,该仲裁员被授予与整个裁决的集中程度相当的特权。
怎么办

如有必要,在智能合约中引入人为延迟资金转移

8.交货时间长


如果您有一个动态系统,该系统不断重写状态和基于状态的逻辑,那么您很可能对等待时间不满意,因为 至少在以太坊中,正常的交易确认时间可以被认为是半分钟,如果您不破产,通常会更长。 即使帐户不能持续几秒钟,也值得考虑是否可以无限期地延迟交易并设置足够的时间间隔。 因此,尽管扑克之类的游戏要么无法以纯形式出现在以太坊智能合约上,要么是不平凡的,需要强调链下逻辑
怎么办

  • 如果您打算非常频繁地转向区块链,则应该不要以太坊,而是根本不要以太坊。
  • 如果可能,将多个事务合而为一,执行部分链下逻辑
  • 作为最后的选择,您可以根据需要提高汽油价格
  • 如果交易时间不长,您可以指定提高的价格并再次发送(交易应保持不变,包括现时)。 较贵的将取代较便宜的

9.审查制度尚不完善


如果您想在区块链的帮助下与政府对抗或类似的事情,请知道即使是基于区块链的Web服务仍然是一个集中的事物。 也就是说,域名或ip仍然很容易被阻止,用户将需要找出镜像的地址。 优点-您无需进行数据库备份,也无需知道以太坊网络上的地址,便始终可以通过用户友好程度较低的方式(Mist,MyEtherWallet,etherscan等)进行访问,但是不能说审查问题已经完全解决。
怎么办

阻止阻力是一种奖励,但是您不应基于是否使用区块链来做出决定。

如果不是以太坊,那又是谁呢?


很多人。 其他的区块链和非区块链解决方案可以牺牲分散性,开放性或可访问性来吸引无限数量的参与者,以换取交易速度提高,无隐私问题等。 这些是EOS,Hyberledger,Exonum,Hashgraph,Corda等解决方案。 但是,有一个重要的因素,如人名。 这是一个庞大的用户群,是一个大型的应用程序,信息和开发工具,测试数据库。 这可以写在以太坊的专业人士中。 让我们看看Casper和Sharding带来了什么。

一切都那么糟糕吗?


所有这些要点中最重要的问题是对区块链选择的认识。 该技术解决问题很重要,在已经解决的任务中添加区块链最有可能不会使解决方案更有效。
例如,如果您不知道谁想要开设赌场,那么您在赢得声誉,展现诚实和吸引某种用户基础方面就会遇到问题。 通过提供以太坊解决方案,您至少可以从理论上保证用户透明的工作(尽管很少有人会在比赛前实际审核您的智能合约)。 而且您会吸引帐户中使用过多加密货币且使用可能性不足的人。 我们可以说目标正在实现。
而且,如果您想将区块链添加到Messenger中,那么您很可能不仅不会解决问题(它们可能是什么?-审查制度和隐私问题浮现在脑海),而且还会添加新问题。
随着用户群的增加,购买加密货币将比现在更容易,这将是未来的事。 但总的来说,您可以考虑以下应用程序:

  1. 官僚和漫长的过程:转移到国外,文书工作
  2. 基于平台的信任过程:资金,赌场
  3. 在不同地区或不相关公司中使用的数据:旅行社,信用记录,黑名单
  4. 监控不可信流程:投票,筹款

任务属于要点之一的事实并不意味着区块链将完全适合。 始终查看其他更优化的技术所提供的。 也就是说,思路应该是“如何解决这个问题”,而不是“在哪里阻止区块链”。

沉浸在以太坊开发中:
第1部分:简介
第2部分:Web3.js和gas
第3部分:用户应用程序
第4部分:在松露,Ganache和Infura中进行部署和调试
第5部分:Oraclize

Source: https://habr.com/ru/post/zh-CN421805/


All Articles