Zhuang's Diary

言之有物,持之以恒

—即如何设计“可信”技术的信任。
翻译原文: https://media.consensys.net/designing-for-blockchain-whats-different-and-what-s-at-stake-b867eeade1c9

区块链技术正在重新定义信任,改变我们如何思考日常生活的结构,从身份、经济以及政府。它推动设计师进行系统和更大规模的思考 - 重新定义分散形式的未来团队的角色和价值。

如果我们不解决人们实际存在的问题,就无法实现区块链的未来。

我最近的目标是让这个领域有更多的设计师:更多的同理心,更多的用户研究,更多的设计思维,以及更多的关注现在遇到的用户。

人们经常问:“区块链设计有什么不同?”我想给出更好的答案。这个答案从问正确的问题开始:设计信任的真正含义是什么?

为信任1.0做设计

早在2016年中,就开始在IBM开展区块链工作 - 首先是开发工具来获得和维护区块链网络,然后在短时间内发布潜在的身份识别产品。此时,并没有真正意识到在IBM和Hyperledger平台上所做的超越区块链的大局。加密货币热潮还没有真正开始。我从来没有在电视上看到任何加密货币的报道,朋友当然不知道我在说什么。

在加入区块链团队的过程中,记得看过关于比特币的视频,了解了其中的运行原理。但Hyperledger中是没有加密货币的。关于比特币如何工作 - 挖掘,采矿奖励,防止双重开支的保障措施 - 都不在Hyperledger中。因为比特币存在品牌问题,IBM的区块链人员并没有重视,所以也没有真正讨论加密货币。

IBM关注的是区块链的业务成果:节约成本,提高效率,缩短跟踪供应链上货物的时间。我仍然有很多关于激励和私人网络的问题,但是都没有得到解决。

然后,在很短时间内从事了关于身份产品的工作。 我看到了区块链上自我主权认同的巨大潜力,我被迷住了。 这是一个真正帮助人们的机会 - 无证件,被贩运者,边缘案件,身份被盗的人。 这是一个让人们控制自己的数据并帮助他们的机会,而不是集中式的机构,如果他们想要的话,可以通它赚钱。 这时,区块链开始感觉像一场革命。 当你消除所有的障碍并将控制权交还给人时,小鱼可以与大鱼竞争。

在2017年初,我写了关于如何在IBM设计区块链的问题 - 现在称之为Designing for Trust 1.0。 当时看到的是无法真正使用的应用程序,没有明确的流程。 我们一直在追求工程决策,扭曲用户体验,以适应已经构建的内容。 所以,我只是用以人为中心的常规设计原则来解决问题。有过分使用行话(专业术语)问题,并强调显示哈希值。 我认为这是因为大多数应用程序都是为想要看到区块链工作原理的其他开发人员提供的演示。没有人在谈论最终用户。

所以我和同事们进行了最佳猜测,并试图使设计成为交互的重要组成部分。但它仍然是一个表面层,一个附加组件。 我们正在努力尝试和改造一种值得信赖的体验。

设计理论的要点是:

  • 避免行话(生僻的专业词汇)和不可操作的数据(hash 值)。
  • 始终如一。使用设计系统。
  • 使用现有的 UX 模式。
  • 创建积极的指导和反馈。
  • 允许并预测错误。
  • 设计区块链的全球性 — 本地化,设备不可知论。

上述内容看起来大部分是合理的。很多都是通过一致的视觉设计完成的。不需要华丽的动画(当用户没有明确地告诉它时,事物会移动)以及过多的交互流程。当用户遇到新事物和复杂事物时,这些都是优秀设计师会采用的。

加入以太坊

在2017年7月,我加入了ConsenSys,这是一家主要专注于在Ethereum上构建应用的工作室。在写这篇文章的时候(3月23日),ConsenSys有47个活跃的“spokes”,它们基于区块链之上,工作在教育方法,赏金,土地登记,数据科学,会计,音乐和版权,科幻世界,医疗保健和供应链等等方面。这对设计师来说意味着什么,当我想到这个空间的设计意味着什么时,我突然间想到了更多的信息,用户组和数据。

而在将加密电子货币方面与“真正的区块链可修复的问题”分开之前,我在ConsenSys似乎看到了什么事情可以让我们做到这一点。在比赛后期,我问自己:“在没有中央集权的情况下与一个大集团合作意味着什么?没有中间商的情况下,价值可以转移到什么程度?”

饥饿设计

尽管区块链已经存在近十年了(自从Satoshi在2009年开发比特币创世区块以来),仍然没有足够的设计师,或者对设计师的实际操作有足够的了解。直到去年为止才有好转,因为大多数Web3用户都是那些非常感兴趣和有动力的人。一开始,这些情况大部分发生在命令行中,这些用户已经了解了系统。他们会忍无可忍。但是区块链的成功 - 这种分布式账本未来的传言 - 不仅取决于高度熟练和感兴趣的用户能否采用,还取决于那些试图做好工作,购买商品或玩得开心的普通人。

像2017年12月的Cryptokitties拥堵危机等一些基础设施团队日益增长的问题,它带来了更多的临时用户进入这个空间,迫使很多团队重新评估他们的用户体验。 Cryptonerds开始对设计的力量更加感兴趣,希望设计师们做好准备。

设计思维

人们对区块链感到非常兴奋,有时只是想制造一些东西 - 任何东西 - 使用它,不管是否有人真的需要它。 我们必须依靠一个坚实的过程来确保我们知道正在解决哪些问题以及如何知道是否确实正在解决问题。 通过这个测试并确定你是否真的解决了问题的一个策略是设计思维练习。

“设计思维”只是解决关注人类问题的一种方式。 例如,让我们都同意并验证问题甚至是第一个问题。 然后,它就像绘图,原型设计和验证假设一样 - 因为产品团队(业务,设计和工程)的所有部分都需要参与。

低高保真

当他们仍然在餐巾上时评估想法和解决方案。当你被颜色,按钮风格和字体分散注意力时,你不能专注于重要的事情,比如,它是否解决了问题?是否有要采用的层次结构?

Metamask 的设计师Christian Jeria迅速勾勒出想法,向研讨会中的用户展示。

用户研究

一旦你了解了区块链,为大多数用户客观设计已经太迟了。因为你不是你的用户。所以显然你需要研究和测试更多。

不过,我认为最有效的策略是参与式设计,将用户带入研讨会。你不仅可以看到他们使用的东西,他们可以提供即时反馈,并与你共同构思。事情稍微复杂一点 - 签署法律文件,在特定地点采购用户,并制定补偿或奖励措施 - 但收益是指数级的。

合作

在这个领域良好合作是非常关键的,因为团队中的任何一个人都不太可能完全理解所有领域。在ConsenSys,大多数团队都是远程的(分散的),所以必须制定新的策略,以创建“同一个房间中的每个人”动态:能够快速移动,被动地知道你的团队正在做什么,以及当语言不起作用时,互相展示你的意思。

围绕“信赖机器”设计信任

去年,一位同事说:“仅仅因为区块链技术的建立可以消除对信任的依赖,并不意味着用户会信任机器或网络。”就像我之前说过的那样,当时我认为这是使界面更加“值得信赖” - 对通过界面发生的事情更加诚实。

然而,我认为“为信任而设计”比这更深刻。我们现在很难将经验与技术分开。当看到sprint的用户故事时,我会注意到这一点 - 将用户需求与网络/系统需求混淆非常容易。所以试图定义这些图层,我认为真正的关键是能够分辨它们之间的差异。

我认为确实在谈论三种(也许更多)设计的层次:信任机器(区块链),人类系统相互信任和信任感。

1.信任机器

第一层是设计层,它帮助用户信任区块链的各个方面。这意味着围绕现有系统进行设计,帮助人们以最痛苦的方式与机器进行交互,并教育用户了解正在发生的事情。设计师必须了解区块链是如何工作的,以了解什么可以或不可以改变,以便设计诸如gas,等待时间,智能合同和私钥管理等功能。

尽管对用户进行教育和授权非常重要,但有时从设计角度来看,有必要努力将某些功能抽象出来,以便它们不会成为未来体验的组成部分。当然,关于用户是否应该了解参与的系统的所有内容是存在争议的。但期望每个用户都了解区块链的技术内部工作情况是不可能的。例如,用户不需要处理gas — 但现在,它仍然是体验的一部分。 CryptoKitty 危机完美地捕捉到了这种设计的困境。MetaMask的首席开发人员Dan Finlay对此进行了描述:

主要问题在于用户发送的是一笔价格低于标准gas的交易,可能等待几天之后交易才能通过。但用户并不知道,用户感觉似乎整个以太坊网络都坏掉了。
在MetaMask上提出了一个小型解决方案:对于需要很长时间的交易,我们展示了一个按钮,让人们以更高的gas价格重新提交交易。那个小按钮基本上解决了整个问题。它允许人们参加gas拍卖。长期来说,要让用户不要成为加密经济学游戏中的被动乘客,而是成为活跃的玩家,这一点很重要。我们了解到,您不能简化gas拍卖。有时候,人们需要更高出价的动力。

在区块链生态系统中,协作变得至关重要:设计师、研究人员和工程师紧密合作,为用户解决问题。这也是关于了解我们在历史上的位置 - 用未来的眼光和路线图来设计现在的东西。

以太坊的第二层缩放解决方案:状态通道,等离子和Truebit

对于以太坊来说,2018年是基础设施的一年。在生态系统开发出强大的扩展解决方案之前,信任设计也意味着在区块链上花费的交易时间。我们必须关注这些未决状态的用户体验:我们已经接受过技术培训,即使知道交易需要一段时间,仍然无法阻止挫折感和恐慌。

密钥管理是设计人员需要考虑的另一个关键用户体验。由于没有第三方在区块链空间管理用户的数字身份,因此用户必须使用私钥签署交易。安全和设计之间的权衡是长久的:设计是为了为用户创造最好的体验;安全性是为攻击者创造最糟糕的可能体验。必须平衡给予人完全控制的自由和给予人完全控制的危险。

Jonny Howle正在uPort上为此工作。当人们谈论区块链的好处时,他们经常使用“无摩擦”这个词。但让我们来谈谈这意味着什么 - 从中间人,等待时间,第三方等等中删除 - 在某些方面,在处理交易时确实有很好的用途与易犯错的人。作为设计师的一部分工作就是测量什么时间以及我们可以添加多少摩擦。

2.相互信任

除了促进对区块链的信任之外,设计师还需要设计帮助用户信任并用于彼此协作的机制。这是不同的,因为这些都是可以作为设计师改变的事情,在这之前我们只是设计与区块链机制最舒服的互动。

当一位同事首次向我提出“系统思维”作为产品设计师职位描述的技能时,我的反应很差。我们必须能够在用户研究和线框图,设计思维和原型以及前端和视觉设计和测试之间做到吗?

去年我曾见过一些文章,提出在系统思维和设计思维之间找到一个桥梁,这一切似乎都很累人。但后来我意识到设计人员已经在系统层面思考,例如Design Systems。可持续发展,循环设计和社交平台的设计人员都在不断地考虑这种方式。区块链设计师是事实上的系统思考者。

因为现在有办法消除中间商,并快速转移对等价值 - 除了智能合约外 - 可以谈论如下事情:

  • 微小费用:激励用户更想要的东西。Kauri正在探索如何激励为以太坊开发者提供优质帮助。
  • 赌注:给予团队一个理由认为你将以团队的最大利益作为行动指南。
  • 令牌注册管理机构(TCRs):允许大量相互不信任或不必相互信任的人组织在一起的机制。
  • 治理:一群人如何决定事情?谁来投票?谁决定谁来投票?
  • 众包:思想的聚合与思考,人群的智慧,预测市场以及汇集资金的能力。

设计机制是一个专门研究协议的领域,激励理性行为者以社会期望的方式行事。通常没有人能很好地理解用户并准确地预测用户的行为。必须为系统中的每个利益相关者绘制和设计步骤,同时必须经过研究和测试。

这就是将以人为本的设计、系统思维、机制设计和隐含经济学结合在一起的地方。人们不会为了一个系统而参与系统:必须研究激励以及他们如何映射到某人想要完成的事情。设计师需要了解并很好地调整激励措施,以便恰当地设计出可用且令人愉快的体验,并且还能维持更大的系统。

3.信任感

必须创建的最后一层是对信任的公开展示 - 人类被视为可信赖的一切。这个设计原则从Designing for Trust 1.0开始,主要是关于良好的设计:

  • 显式控制。界面应该以用户期望的方式运行。它不应该做用户没有明确告诉它做的事情
  • 减少焦虑和认知负担。复杂的相互作用会放慢速度并逐渐消失。
  • 指导一致性。视觉元素为用户提供暗示,让他们知道该期待什么 - 形状和颜色等元素在界面中具有意义。
  • 尊重既定的约定。除非绝对必要,否则不要让用户学习新的模式。

还有其他一些方法来表现和证明可靠性。来自外部权威机构的徽章 - 例如推特帐户或批准的商人印章 - 是一种明显的方式。另一个是积极寻找是什么让用户感到困惑或焦虑,并解决这个问题。民众正在努力打击假新闻,在研究中了解到,内容消费者并不真正了解如何评估新闻的准确性或质量。他们提出了“信誉指标”来教育消费者为什么要信任某些信息。

设计师是保护者

最后也是最重要的设计信任:道德和保护用户。如果人们最终因我们所做的事情而受到伤害,那么“信任机器”就会失败。就像在开始时所说的,事实是,区块链影响着人们生活中最亲密的部分 - 比如金钱,身份和健康 - 但生活往往像狂野的西部。

区块链最引人注目的方面之一是在任何时候网络状态都是透明的。但是,这种激进的透明度有时会成为令人担忧的原因。如果有什么应该将你的真实生活身份与地址联系起来,那么你所做的一切都在那里。就个人而言,我担心数据三角测量 - 与其他数据结合变得敏感的无害数据。我们必须仔细考虑区块链上的数据以及管理的链接数据。像zkSNARKS这样的隐私解决方案提供了在不透露交易数据的情况下顺畅地在区块链上进行交易的机会。

用户面临的危险大部分存在于他们与区块链之间的空间中。除了作为攻击点 - 未授权用户可以攻击的不同点(输入或提取数据)的总和 - 这是人们忘记或丢失私钥的地方。这是诈骗活动的地方。

仅仅因为这些问题没有在区块链上发生,它们仍然是区块链高速路入口的一部分。必须尽一切可能来教育和保护人们。当出现问题时,用户会不顾一切地指责区块链。

进入这个领域的原因是因为我想帮助别人,但有些时候我很担心。很担心现实生活中的黑镜头剧集,在完全理解我们正在取代的内容之前,用区块链代替传统系统,并构建只激励利润,上瘾(像当前的社交平台)或不良行为的系统(但并没有预料到)。

行动号召

设计师,我们需要你在这里。几乎所有的项目都有可能改变我们做事情的方式,而且您有能力影响这种变化是正面还是负面。有很多重要的想法和紧迫的哲学问题,我们需要人们对这些话题给予关注。我们需要知道如何构思,测试,研究,迭代,实验和运送产品的人员。

如果你是新手,不要只阅读文章。其实参与是快速学习的最佳途径。安装Metamask,购买Cryptokitty。在Coinbase上购买数字货币,然后花在Overstock上。

区块链不仅仅是加密货币,所以要探索其他社区。查看Ujo的创作者门户网站和Cellarius的故事讲述平台。尝试赏金或Gitcoin的设计任务。编写智能合同或构建dApp的教程。把你的手指放在区块链上。

不要害怕提问。每个人都是新的,我们一起解决它。在ConsenSys,我们一直在寻找产品设计师,系统和设计思想家,设计研究人员等等。我们需要您的帮助来构建和设计人们可以信任的分布式未来。

令牌环领导人选举算法

We start with 6 processes,
connected in a logical ring.
Process 6 is the leader,
as it has the highest number.

Process 6 fails.

Process 3 notices that Process 6 does not respond
So it starts an election,
sending a message containing its id
to the next node in the ring.

Process 5 passes the message on,
adding its own id to the message.

Process 0 passes the message on,
adding its own id to the message.

Process 1 passes the message on,
adding its own id to the message.

Process 4 passes the message on,
adding its own id to the message.

When Process 3 receives the message back,
it knows the message has gone around the ring,
as its own id is in the list.
Picking the highest id in the list,
it starts the coordinator message
“5 is the leader” around the ring.

Process 5 passes on the coordinator message.

Process 0 passes on the coordinator message.

Process 1 passes on the coordinator message.

Process 4 passes on the coordinator message.

Process 3 receives the coordinator message,
and stops it.

让我们分析如何在ZooKeeper集合中选举leader节点,这个过程和令牌环原理是一致的。考虑一个集群中有N个节点。leader选举的过程如下:

  • 所有节点创建具有相同路径 /app/leader_election/guid_ 的顺序、临时节点。
  • ZooKeeper集合将附加10位序列号到路径,创建的znode将是 /app/leader_election/guid_0000000001,/app/leader_election/guid_0000000002等。
  • 对于给定的实例,在znode中创建最小数字的节点成为leader,而所有其他节点是follower。
  • 每个follower节点监视下一个具有最小数字的znode。例如,创建znode/app/leader_election/guid_0000000008的节点将监视znode/app/leader_election/guid_0000000007,创建znode/app/leader_election/guid_0000000007的节点将监视znode/app/leader_election/guid_0000000006。
  • 如果leader关闭,则其相应的znode/app/leader_electionN会被删除。
  • 下一个在线follower节点将通过监视器获得关于leader移除的通知。
  • 下一个在线follower节点将检查是否存在其他具有最小数字的znode。如果没有,那么它将承担leader的角色。否则,它找到的创建具有最小数字的znode的节点将作为leader。
  • 类似地,所有其他follower节点选举创建具有最小数字的znode的节点作为leader。

欺负算法

We start with 6 processes,
all directly connected to each other.
Process 6 is the leader,
as it has the highest number.

Process 6 fails.

Process 3 notices that Process 6 does not respond
So it starts an election, notifying those processes
with ids greater than 3.

Both Process 4 and Process 5 respond,
telling Process 3 that they’ll take over from here.

Process 4 sends election messages
to both Process 5 and Process 6.

Only Process 5 answers
and takes over the election.

Process 5 sends out only one election message
to Process 6.

When Process 6 does not respond
Process 5 declares itself the winner.

本文内容比原文略微变更:

https://mp.weixin.qq.com/s/kTunEa9AdO3mTlBp0Np5-g

3月15日,DRC智能合约账户遭受黑客攻击,导致账户内的DRC Token被盗。DRC开发人员及时对该黑客钱包地址中的DRC Token进行了锁定,这部分代币将无法被转出。所有DRC Token的持有者不会因此次事件而遭受经济损失。

在全面分析本次黑客攻击事件后,决定采取封禁原有代币及合约,重新部署新代币及智能合约。此前接收过DRC Token的用户(3,543 addresses),DRC将在部署新的代币合约后,按原区块链浏览器上的地址和代币数重新打币。原接收的DRC Token销毁后将作废。

在分析黑客行为的过程中,发现该黑客在过去一年时间内对多个区块链项目进行持续的偷盗,累计金额达2000万美金。尽管有多位受害曾经通过不同媒体发布相关报道,但黑客行动仍在继续。因此在此提醒区块链项目的开发团队能够引以为鉴,将代码合约安全放在首位。

漏洞解析

此次遭遇的安全漏洞,实际上在早在2015年Ethereum 团队就给出过安全提醒,一年前My Ether Wallet的Founder也在etherscan的这个黑客地址下留言解释过,并给出了建议。

https://blog.ethereum.org/2015/08/29/security-alert-insecurely-configured-geth-can-make-funds-remotely-accessible/

下面这个链接是以太坊官方reddit论坛上关于这个漏洞产生的实际问题的讨论:

https://www.reddit.com/r/ethereum/comments/4z0mvi/ethereum_nodes_with_insecure_rpc_settings_are/

根据以太坊官方论坛讨论的内容以及我们对后台log的分析,这个安全漏洞的主要原理如下:

  1. 使用geth或者parity客户端在本机创建一个全节点来同步以太坊区块,同时提供HTTP RPC API 方便其他地方的机器通过geth或者parity客户端访问,这样其他地方的geth或者parity不用重复的在本地同步区块。通常HTTP RPC API的访问是通过首先连接 xxx.xxx.xxx.xxx:8545 这个URL,然后就能访问诸如“eth_accounts”,”eth_sendTransaction”等API了。 8545是geth开启RPC服务的默认端口,xxx.xxx.xxx.xxx是这个全节点的可被外网访问的IP地址。

2.这样做有安全漏洞,原因是黑客也可以连接这个服务,调用”eth_xxxxx”等API。举例来说,他会做下面三步操作:

1)首先call eth_getBlockByNumber(“0x00”, false),因为本机同步了所有区块,所以这个调用可以得到本地同步的区块高度。

2)接下来调用eth_accounts API,可以通过这个API得到当前本机节点导入的所有以太坊账户的地址列表。

3) 然后通过所有账户地址对外发送eth_sendTransaction 调用,这个API调用可以发送该账户地址下的所有数字资产到一个指定的以太坊地址。

以上这三步可以不停的重复,几乎可以达到每秒调用一次,这样就有可能正好碰上本机用户对自己的钱包地址执行unlockAccount方法,这个方法将使用自己的密码从本地的keystore里获取private key对要发起的交易进行签名,从而成功交易。而unlock状态会保持一个短暂的时间,也就是在这个短暂的时间段内,用户不用再次输入密码为交易签名,在这个时间段内所有发起的交易都可以自动签名,因此,在这个时间段内如果恰好黑客用这个地址所发起的eth_sendTransaction调用被执行到,那么黑客就成功的获取用户的签名权限并将该钱包地址上的数字资产转走。而且一旦交易成功,黑客应该能通过某种方式获得整个签名加密的信息,从而完全控制这个账户,只要这个账户仍然在geth上连接,黑客就能一直用这个账户地址发起交易并签名成功,直到这个账户退出geth客户端。

这就是通过HTTP RPC API发动黑客攻击的具体过程。如果要想避免这种行为带来的危害,首先,不要用默认端口(8545)开启HTTP RPC服务,也不要对Internet全网开放。但即使这样做了,黑客仍然有可能通过别的方法获取到端口或者IP地址成功的连上RPC服务,那么这就要求全节点使用者在对外提供HTTP RPC API的时候,一定不能使用unlockAccount方法来解锁本地的账户地址,而要用其他方式进行签名交易,比如每次通过调用web3接口的函数发起交易的时候,使用密码文件作为参数在函数调用语句中签名,或调用web3提供的Sign函数接口去签名交易。unlockAccount方法只能在测试环境或者是不提供HTTP RPC API服务的主机上使用。

这个漏洞对geth提供的WS API应该也是有效的,因为WS服务也可以对外公开。

另外,根据这次教训,有一条原则就是拥有大量数字代币的账户一定不要用来作为在主网上调用各种接口和智能合约的主体,因为一旦遭受攻击就会损失大量代币。应该使用其他独立的账户地址做这些事情,通过代币合约提供的approve()方法从拥有代币的账户地址得到授权,然后用这个独立的账户地址(可以是另一个智能合约的地址)去执行transferFrom()方法来分发代币,因为这样一来该地址得到的授权额度是有限的,二来黑客使用的sendTransaction API调用是不能调用到transferFrom这个方法的,因此会更安全。

无论是对于普通用户还是团体账户,谨记不要让某一个账户的余额特别高,如果有存储高额余额的需要,最好用冷钱包。如上所述,可以用代币合约的授权方法,授权给一些账户可以交易的额度,让这些授权账户去做实际的交易,这样就能规避这种黑客攻击的风险。因为这些授权账户地址里是没有实际的代币的,只是代替有余额的冷钱包账户对外发币。

黑客地址

该黑客的钱包地址为:

0x957cD4Ff9b3894FC78b5134A8DC72b032fFbC464

谷歌和百度黑客的地址,发现有若干条关于该地址的记录,国内外都有受害者。

使用etherscan.io对黑客地址进行查看后发现:

1、地址最早的Token Transfer记录可回溯到2016年2月14日;

2、地址中存在大量尚未上市流通的代币,但也有超过50个已上市流通的代币;

3、在已上市流通的代币中,有3个代币的交易笔数较多,分别是:Minereum(420笔)、PlusCoin(97笔)、Soarcoin(49笔);

4、除了两笔OUT外,其余均为IN。许多代币的转入具有固定模式:在同一时间段,以固定金额、固定笔数转入。例如,Minereum,每批次固定转入6笔,每批转入金额固定。

这种固定模式不仅发生在已上市流通的代币交易中,也广泛发生在未流通的代币交易中。因此,推测以这种模式转入的代币,亦为黑客盗取所得。

1、地址仅有的两笔OUT,是卖出soarcoin,一共卖掉了15278193.22 SOAR。其余关于soarcoin的记录均为转入,且累计转入=累计卖出。按照最后一笔卖掉的SOAR的价格,这个黑客变现了约42万美金;

2、地址中存在的可流通的代币里,价值最高的是UGT(约113万个,市值约65万美金),还有TNB(500万个,市值约13万美金)、NULS(约4万个,市值约10万美金)、KBR(约1万个,市值约6万美金)、OMG(约3千个,市值约3万美金)等。

我们诚恳邀请关注以太坊安全问题的读者,和我们一起深挖该黑客的行为路径。

黑客钱包地址:0x957cD4Ff9b3894FC78b5134A8DC72b032fFbC464

DRC社区采取应对措施

区块链技术仍然处于一个非常早期阶段、技术壁垒高的行业,几乎所有的团队都在学习和探索中。DRC团队经历此次事件后,深刻体会到安全风险无处不在,代币智能合约的开发只有更细致、更严密和更谨慎。

我们全面、深刻地分析整个事件始末,并积极采取措施改善与提升技术和管理,应对措施要点如下:

1、我们将联合国内、外顶级的代码审计团队,对代码进行更严格的审查;

2、邀请专家共同探讨关于智能合约、网络安全、代币管理、帐户管理等一系列相关主题,以寻求建立更严谨、更规范的管理体系,更加重视并优化内部操作管理流程;

3、加强开发规范与管理,将更积极的学习有关智能合约和代币相关的安全注意事项,加入以太坊与安全相关社区和论坛,更快的知晓有哪些安全漏洞需要注意,提前规避风险;

4、开发人员将避免在提供RPC服务的全节点上执行类似unlockAccount方法的操作,而使用Web3的Sign接口函数在发起交易时实时的签名,以规避账户风险;

5、提议并倡导建立智能合约安全联盟,为改善区块链行业的安全现状,DRC呼吁并号召成立行业安全联盟,集合项目方、安全团队、极客团队等加入,联合发起安全联盟,推动行业健康发展。联合相关专家与团队共同发起《区块链行业安全联盟公约发起函》。

6、DRC生态建设基金愿出资2000万DRC作为安全联盟专家费用,促进区块链行业有关智能合约、网络安全、法律法规等专题讨论,也欢迎更多有此志向的区块链项目团队和专家共同出资共建。

我们将此次事件进行披露公开,虚心接受大家的批评和建议,请大家多多指正。也希望其他区块链项目的开发团队引以为鉴,防患于未然。将代码合约安全放在首位,发布前进行严密的系统测试,必要时要请外部专业团队进行测试。请加群秘微信 chiajung ,邀请进入社群作进一步沟通。

探讨的话题不限于以下内容:

1、智能合约中需要采取的必要安全措施

2、区块链项目遭受黑客攻击后的应对方案

3、智能合约中已知的安全漏洞

4、区块链项目对代币及资金安全的管理制度

5、相关的法律法规问题

附件:相关以太坊主要漏洞描述

如果智能合约开发者疏忽或者测试不充分,而造成智能合约的代码有漏洞的话,就非常容易被黑客利用并攻击。并且越是功能强大的智能合约,就越是逻辑复杂,也越容易出现逻辑上的漏洞。同时,智能合约语言Solidity自身与合约设计都可能存在漏洞。据有关调查统计,以太坊主要漏洞情况描述如下表:

上述漏洞目前已经广泛存在以太坊网络中,2018年2月24日,新加坡和英国几位研究员指出,3.4万多份以太坊智能合约可能存在容易被攻击的漏洞,导致数百万美元以太币暴露在风险中,其中2,365份属于著名项目。