算法作恶
1. 如何辩别真正的区块链数字货币
某个数字货币是否是一个有价值的币种,在目前基本属于“天使轮”阶段而言,判定标准有三个,一是团队,二是经济模型,三是行业需求。
团队的随机性太大,在此不进行讨论。本文首先对数字货币的经济模型进行一个详尽地分析,在随后的文章中,笔者会根据不同行业对部分数字货币进行剖析。
严格来讲,本文所涉及的经济模型,并不完全等同于经济学中所述概念。特指在数字货币中,货币的共识机制与激励机制。
一、共识机制
共识机制是区块链系统中各个节点达成一致的策略和方法,应根据系统类型及应用场景的不同灵活选取。
常用的共识机制主要有PoW、PoS、DPoS、PBFT(及其变种)等。另外,基于区块链技术的不同应用场景,以及各种共识机制的特性,本文按照以下维度来评价各种共识机制的技术水平:
a) 合规监管:是否支持超级权限节点对全网节点、数据进行监管;
b) 性能效率:交易达成共识被确认的效率;
c) 资源消耗:共识过程中耗费的CPU、网络输入输出、存储等计算机资源;
d) 容错性:防攻击、防欺诈的能力。
1 行业背景
寻找行业痛点:资产管理需要专业的团队与知识,然而现在大多数数字货币投资者并不具备;数字货币市场行情波动巨大,在行情下挫中,投资者无法对资产进行保值。
2 自身优势
在股票、期货市场深耕多年,有成熟、高素质资产管理团队;AI大数据团队技术实力强劲。
3 市场调研
进行市场调研之后,预估未来5年内,资产管理的市值约为10亿美元。
4 数字货币总量
在考虑预期资产管理市值、开发周期与难度后,考虑发行基于以太坊ERC20数字货币XT,数量20亿枚,永不增发。
5 分配方式
早期投资人持有10%,团队持有20%,商务运营10%,社区建设10%,投资者持有50%。
6 数字货币释放/回购机制
释放机制分为三类:
第一类:商务运营持币部分为全部解锁,用途限定为商务及运营活动;
第二类:社区建设部分的释放机制为,社区成员发布独家资讯、合作平台发布独家项目进展等行为,根据参与ID数,释放相应比例XT(发布者与参与者各获得50%),直至全部释放完成(释放完成之后,后续奖励来源于平台利润池);
第三类:投资者持主流数字货币,在平台中进行资产管理,根据兑换比例,释放一定数量的XT,早期投资人与团队持有部分同步,按比例解锁;
回购机制为:所得利润(以XT计)的50%返还给持币者;剩余进入平台利润池中,按月对利润池中的50%的XT进行销毁,直至XT总量为10亿枚;其余作为平台生态建设基金;
7 数字货币权益
利润分成:持有XT,是为平台用户,可以享受平台利润50%的分成;
平台治理:参与平台活动享受XT奖励、其他项目方的空投活动;
功能定制:可基于平台AI大数据,投资者可购买针对个人交易策略进行优化的服务
2. 人工智能作恶谁之过
“9·11 是犹太人干的,把他们都送进毒气室!种族战争现在开始!”
2016年3月23日,一个人设为19岁女性,昵称为 Tay 的聊天机器人在推特上线。这个微软开发的机器人能够通过抓取和用户互动的数据模仿人类的对话,像人一样用笑话、段子和表情包聊天。但是上线不到一天,Tay 就被“调教”成了一个满口叫嚣着种族清洗的极端分子,微软只好以系统升级为由将其下架。
微软聊天机器人的极端言论。
这样的口号并不是聊天机器人的发明,而在社交网络上大量存在着。美国大选期间,一些所谓的“政治新媒体”账号发出的掺杂阴谋论、种族主义的内容,在Facebook 上进行了病毒式传播。这有赖于人工智能协助下的“精准定位”:谁最容易相信阴谋论,谁对现实最不满?相应的政治广告和假新闻能精准地投放到这群人中,使人对自己的看法更加深信不疑。
因为设计缺陷而 “暴走”的聊天机器人,和精心策划的线上政治行为,看起来仿佛是两回事。但这种我们似乎从未见过的景象,却指向了同一个“兇器”——大数据驱动下的人工智能。
1、人工智能有作恶的能力吗?
人工智能会“作恶”吗?面对智能的崛起,许多人抱有忧虑和不安: 拥有感情和偏见的人会作恶,而仅凭理性计算进行判定的计算机似乎也会“作恶”, 且作起来易如反掌。这让许多人(特别是非技术领域的人)对人工智能的发展持悲观态度。
这种忧虑并不是最近才有的。人工智能这个词诞生于上世纪50年代,指可体现出思维行动的计算机硬件或者软件,而 对机器“拥有思维”之后的伦理探讨,早至阿西莫夫开始就在科幻作品里出现。
14 年前,威尔·史密斯主演的电影《机械公敌》里就有这样一个场景:2035 年的人类社会,超高级的人工智能承担大量工作,并与人类和谐相处。这些原本完全符合阿西莫夫“三定律”的人工智能,在一次关键升级之后对人类发起了进攻。这些机器人拥有了思维进化的能力,在它们的推算下,要达到“不伤害人类”的目的,就必须先消灭“彼此伤害”的人类。
十分高产的科幻作家阿西莫夫(1920-1992)。
剑桥分析CEO亚历山大·尼克斯(Alexander Nix)。
剑桥分析并不是一个孤例。澳洲一个 Facebook 的广告客户透露,Facebook 的人工智能会分析其用户特征和所发的内容,给出诸如“有不安全感的年轻人”“抑郁、压力大”等标签,然后有针对性地投放游戏、瘾品和甚至虚假交友网站的广告,从中获取巨大利益。
即使不存在数据泄露问题,对用户数据的所谓“智能挖掘”也很容易游走在“合规”但“有违公平”的边缘。例如,电商能够根据一个人的消费习惯和消费能力的计算,对某个人进行针对的、精密的价格歧视。购买同样的商品,用 iPhone X 手机的用户很可能会比用安卓“千元机”的用户付更多的价钱,因为他们“倾向于对价格不敏感”。而我们所经常谈论的“大数据杀熟”——比如携程老用户订旅馆的价格会更高——也建立在用户行为数据的基础上。
数据的收集本身也值得商榷。前网络人工智能首席科学家吴恩达(Andrew Ng)就曾公开表示, 大公司的产品常常不是为了收入而做,而是为了用户的数据而做;在某一个产品上收集的数据,会用于在另一个产品上获利。 在智能面前,没有所谓的个人隐私和行踪,也很难确定数据收集的边界在哪里,尤其是个人隐私与公共信息、主动提供与被动提供的边界。
总而言之, 在以商业利益为目标的人工智能眼里,并没有“人”或者“用户”的概念,一切都是可以利用的数据。 剑桥大学互联网与社会研究中心教授朔沙娜·祖博夫将这种人工智能和资本“合体”的现状,称之为 “监控资本主义” (Surveillance Capitalism)——在大数据和人工智能的协助下,通过对每个人的监控和信息的榨取,实现资本的最大化。
业界对此的态度很暧昧。AI 作为当下最热门、来钱最快的行当之一,这些动辄年薪50万美元的工程师很少得闲来思考“形而上”的问题。 一位不愿具名的研究人员在与我的微信私聊中表达了他的“个人看法”:“现在的技术离‘通用人工智能’还很远,对社会伦理方面的影响没有那么大,更多还是从繁琐的重复劳动中解脱出来。”
作者试图找到行业内人士对此评论,谷歌(中国)和网络自动驾驶部门的人工智能相关人员均表示,探讨 AI 的社会问题,牵涉到公司利益和形象,比较敏感,不便评论。
“人工智能作为一个工具,如何使用,目前来看决定权依然在人。”俞扬说道 ,“系统的设计者和商业(应用)的提供人员需要对此负责。”
如何负责?这或许需要我们正视人工智能对整个社会关系的挑战。
4、人工智能作恶之后
2018年3月 19 日,一辆自动驾驶的优步(Uber)在美国亚利桑那州惹上了麻烦。面对路中出现的一个推着自行车的女性,这辆车速 38 mph(约61km/h)的沃尔沃在昏暗的光线条件下并没有减速,径直撞了上去,受害者被送往医院之后不治身亡。这是自动驾驶第一例行人致死的事故。
电视台对自动驾驶优步车祸的报道。
事故发生之后,有不少人将矛头指向了自动驾驶的人工智能是否足够安全上,或者呼吁优步禁止自动驾驶。然而更关键的问题在于,亚利桑那有着全美国几乎最开放的自动驾驶政策,事故发生地坦佩市(Tempe)是实行自动驾驶最火的“试验田”之一;事故所在的街区早已做过路线测试,并被自动驾驶的智能采纳。但是在事故发生之后,对于责任的认定依然遇到了困难。
因为人的疏忽造成的车祸数不胜数,人们早已习惯了如何处理、怎样追责;然而机器出错了之后,人们忽然手足无措。 人工智能会出错吗?当然会。只是我们在这个问题上一直缺乏认知。 就如同上文提到的“隐性歧视”,深度学习的“黑箱”,现有的法律法规很难对这些错误进行追究,因为不要说普通人,就连技术人员也很难找出出错的源头。
当人工智能的决策在人类社会中越来越重要时,我们也不得不考虑,智能为什么会犯错,犯错了怎么办;若要让智能摆脱被商业或者政治目的支使的工具,真正成为人类的“伙伴”, 需要怎么监管、如何教育,才能让人工智能“不作恶”。
人工智能的监管问题亟待解决。
对此,现有的法律框架内很难有清晰的、可操作的实施方案。欧盟率先在数据和算法安全领域做出了立法的尝试,2018年5月即将生效的新法规规定,商业公司有责任公开“影响个人的重大决策”是否由机器自动做出,且做出的决策必须要“可以解释”(explainable)。但法条并没有规定怎么解释,以及细到什么程度的解释是可以接受的。
另外一个重要的问题是, 让机器求真求善,需要人类自己直面决策中的黑暗角落。 在 Atari 游戏智能的测试中,游戏中的人工智能 bot 可以用最快的速度找到漏洞开始作弊,而游戏玩家又何尝不是呢?不管是带有歧视的语义分析,针对少数族裔进行的“智能监视”和跟踪,或者把已婚未育女性的简历扔掉的智能简历筛选,都长期以各种形式存在于人类社会中。
人工智能不是一个可预测的、完美的理性机器,它会拥有人类可能拥有的道德缺陷,受制于人们使用的目标和评估体系。 至少目前,机器依然是人类实然世界的反应,而不是“应然世界”的指导和先驱。 对机器的训练同样少不了对人性和社会本身的审视——谁在使用,为了什么而使用,在我们的世界中扮演着怎样的角色?数据是谁给的,训练的目标是谁定的?我们期望中的机器,会继承我们自己的善恶吗?
谷歌中国人工智能和机器学习首席科学家李飞飞认为, 要让机器“不作恶”,人工智能的开发需要有人本关怀 。“AI 需要反映我们人类智能中更深层的部分,”李飞飞在《纽约时报》的专栏中写道,“要让机器能全面地感知人类思维……知道人类需要什么。”她认为,这已经超越了单纯计算机科学的领域,而需要心理学、认知科学乃至社会学的参与。
未来,人工智能进入更多的领域、发挥更强的功能,是无可争辩的事实。然而,我们的生产关系能否适应人工智能带来的生产力,这句马克思政治经济学的基本原则值得我们认真思考一番。 我们并不想看到未来的“机器暴政”将我们的社会绑在既有的偏见、秩序和资本操纵中。
一个AI
人工智能之所以会作恶,可能就是因为太像人类了吧。
3. 如何才能确保人工智能不作恶
尽管人工智能在近几年取得了巨大的技术进步, 但其实依然还处在婴儿期。正如一个年幼的孩子会模仿周围人的行为,人工智能也正在向人类学习。因此,作为人工智能“父母”的人类,必须确保把反映和尊重我们周围世界的价值观和道德观贯穿于人工智能产品和服务之中。
维护问责制的一个简单方法是创建的人工智能系统不能完全自治。人工智能只是提供了人类用于决策所需要的信息。例如,在发射火箭之前,需要有人按下红色按钮。在做出治疗或手术的决定之前,需要医生征询你的同意。复杂的洞察力由人工智能提供,但最终的决策要由人类做出。这样的人工智能系统就可考虑应用在文化敏感性高、潜在后果影响重大的场境中。
4. 共识算法系列之一:私链的raft算法和联盟链的 pbft 算法
对数据顺序达成一致共识是很多共识算法要解决的本质问题
Fabic的pbft算法实现
现阶段的共识算法主要可以分成三大类:公链,联盟链和私链
私链,所有节点可信
联盟链,存在对等的不信任节点
私链:私链的共识算法即区块链这个概念还没普及时的传统分布式系统里的共识算法,比如 zookeeper 的 zab 协议,就是类 paxos 算法的一种。私链的适用环境一般是不考虑集群中存在作恶节点,只考虑因为系统或者网络原因导致的故障节点。
联盟链:联盟链中,经典的代表项目是 Hyperledger 组织下的 Fabric 项目, Fabric0.6 版本使用的就是 pbft 算法。联盟链的适用环境除了需要考虑集群中存在故障节点,还需要考虑集群中存在作恶节点。对于联盟链,每个新加入的节点都是需要验证和审核的。
公链:公链不仅需要考虑网络中存在故障节点,还需要考虑作恶节点,这一点和联盟链是类似的。和联盟链最大的区别就是,公链中的节点可以很自由的加入或者退出,不需要严格的验证和审核。
在公有链中用的最多的是pow算法和pos算法,这些算法都是参与者的利益直接相关,通过利益来制约节点诚实的工作,解决分布式系统中的拜占庭问题。拜占庭容错算法是一种状态机副本复制算法,通过节点间的多轮消息传递,网络内的所有诚实节点就可以达成一致的共识。
使用拜占庭容错算法不需要发行加密货币,但是只能用于私有链或者联盟链,需要对节点的加入进行权限控制;不能用于公有链,因为公有链中所有节点都可以随意加入退出,无法抵挡女巫攻击(sybil attack)
raft 算法包含三种角色,分别是:跟随者( follower ),候选人(candidate )和领导者( leader )。集群中的一个节点在某一时刻只能是这三种状态的其中一种,这三种角色是可以随着时间和条件的变化而互相转换的。
raft 算法主要有两个过程:一个过程是领导者选举,另一个过程是日志复制,其中日志复制过程会分记录日志和提交数据两个阶段。raft 算法支持最大的容错故障节点是(N-1)/2,其中 N 为 集群中总的节点数量。
国外有一个动画介绍raft算法介绍的很透彻,链接地址为: http://thesecretlivesofdata.com/raft/ 。这个动画主要包含三部分内容,第一部分介绍简单版的领导者选举和日志复制的过程,第二部分内容介绍详细版的领导者选举和日志复制的过程,第三部分内容介绍的是如果遇到网络分区(脑裂),raft 算法是如何恢复网络一致的。
pbft 算法的提出主要是为了解决拜占庭将军问题
要让这个问题有解,有一个 十分重要的前提 ,那就是 信道必须是可靠的 。如果信道不能保证可靠,那么拜占庭问题无解。关于信道可靠问题,会引出两军问题。两军问题的结论是,在一个不可靠的通信链路上试图通过通信以达成一致是基本不可能或者十分困难的。
拜占庭将军问题最早是由 Leslie Lamport 与另外两人在 1982 年发表的论文《The Byzantine Generals Problem 》提出的, 他证明了在将军总数大于 3f ,背叛者为f 或者更少时,忠诚的将军可以达成命令上的一致,即 3f+1<=n 。算法复杂度为 o(n^(f+1)) 。而 Miguel Castro (卡斯特罗)和 Barbara Liskov (利斯科夫)在1999年发表的论文《 Practical Byzantine Fault Tolerance 》中首次提出 pbft 算法,该算法容错数量也满足 3f+1<=n ,算法复杂度为 o(n^2)。
首先我们先来思考一个问题,为什么 pbft 算法的最大容错节点数量是(n-1)/3,而 raft 算法的最大容错节点数量是(n-1)/2 ?
对于raft算法,raft算法的的容错只支持容错故障节点,不支持容错作恶节点。什么是故障节点呢?就是节点因为系统繁忙、宕机或者网络问题等其它异常情况导致的无响应,出现这种情况的节点就是故障节点。那什么是作恶节点呢?作恶节点除了可以故意对集群的其它节点的请求无响应之外,还可以故意发送错误的数据,或者给不同的其它节点发送不同的数据,使整个集群的节点最终无法达成共识,这种节点就是作恶节点。
raft 算法只支持容错故障节点,假设集群总节点数为n,故障节点为 f ,根据小数服从多数的原则,集群里正常节点只需要比 f 个节点再多一个节点,即 f+1 个节点,正确节点的数量就会比故障节点数量多,那么集群就能达成共识。因此 raft 算法支持的最大容错节点数量是(n-1)/2。
对于 pbft 算法,因为 pbft 算法的除了需要支持容错故障节点之外,还需要支持容错作恶节点。假设集群节点数为 N,有问题的节点为 f。有问题的节点中,可以既是故障节点,也可以是作恶节点,或者只是故障节点或者只是作恶节点。那么会产生以下两种极端情况:
第一种情况,f 个有问题节点既是故障节点,又是作恶节点,那么根据小数服从多数的原则,集群里正常节点只需要比f个节点再多一个节点,即 f+1 个节点,确节点的数量就会比故障节点数量多,那么集群就能达成共识。也就是说这种情况支持的最大容错节点数量是 (n-1)/2。
第二种情况,故障节点和作恶节点都是不同的节点。那么就会有 f 个问题节点和 f 个故障节点,当发现节点是问题节点后,会被集群排除在外,剩下 f 个故障节点,那么根据小数服从多数的原则,集群里正常节点只需要比f个节点再多一个节点,即 f+1 个节点,确节点的数量就会比故障节点数量多,那么集群就能达成共识。所以,所有类型的节点数量加起来就是 f+1 个正确节点,f个故障节点和f个问题节点,即 3f+1=n。
结合上述两种情况,因此 pbft 算法支持的最大容错节点数量是(n-1)/3
pbft 算法的基本流程主要有以下四步:
客户端发送请求给主节点
主节点广播请求给其它节点,节点执行 pbft 算法的三阶段共识流程。
节点处理完三阶段流程后,返回消息给客户端。
客户端收到来自 f+1 个节点的相同消息后,代表共识已经正确完成。
为什么收到 f+1 个节点的相同消息后就代表共识已经正确完成?从上一小节的推导里可知,无论是最好的情况还是最坏的情况,如果客户端收到 f+1 个节点的相同消息,那么就代表有足够多的正确节点已全部达成共识并处理完毕了。
3.算法核心三阶段流程
算法的核心三个阶段分别是 pre-prepare 阶段(预准备阶段),prepare 阶段(准备阶段), commit 阶段(提交阶段)
流程的对比上,对于 leader 选举这块, raft 算法本质是谁快谁当选,而 pbft 算法是按编号依次轮流做主节点。对于共识过程和重选 leader 机制这块,为了更形象的描述这两个算法,接下来会把 raft 和 pbft 的共识过程比喻成一个团队是如何执行命令的过程,从这个角度去理解 raft 算法和 pbft 的区别。
一个团队一定会有一个老大和普通成员。对于 raft 算法,共识过程就是:只要老大还没挂,老大说什么,我们(团队普通成员)就做什么,坚决执行。那什么时候重新老大呢?只有当老大挂了才重选老大,不然生是老大的人,死是老大的鬼。
对于 pbft 算法,共识过程就是:老大向我发送命令时,当我认为老大的命令是有问题时,我会拒绝执行。就算我认为老大的命令是对的,我还会问下团队的其它成员老大的命令是否是对的,只有大多数人 (2f+1) 都认为老大的命令是对的时候,我才会去执行命令。那什么时候重选老大呢?老大挂了当然要重选,如果大多数人都认为老大不称职或者有问题时,我们也会重新选择老大。
四、结语
raft 算法和 pbft 算法是私链和联盟链中经典的共识算法,本文主要介绍了 raft 和 pbft 算法的流程和区别。 raft 和 pbft 算法有两点根本区别:
raft 算法从节点不会拒绝主节点的请求,而 pbft 算法从节点在某些情况下会拒绝主节点的请求 ;
raft 算法只能容错故障节点,并且最大容错节点数为 (n-1)/2 ,而 pbft 算法能容错故障节点和作恶节点,最大容错节点数为 (n-1)/3 。
pbft算法是通过投票来达成共识,可以很好的解决包括分叉等问题的同时提升效率。但仅仅比较适合于联盟链私有链,因为两两节点之间通信量是O(n^2)(通过优化可以减少通信量),一般来说不能应用于超过100个节点。
pbft有解的前提是 信道必须是可靠的 ,存在的问题是 可扩展性(scalability)差
部分来自: https://blog.csdn.net/kojhliang/article/details/80270223
区块链在设计上就是为了BFT
5. 011:Ethash算法|《ETH原理与智能合约开发》笔记
待字闺中开发了一门区块链方面的课程:《深入浅出ETH原理与智能合约开发》,马良老师讲授。此文集记录我的学习笔记。
课程共8节课。其中,前四课讲ETH原理,后四课讲智能合约。
第四课分为三部分:
这篇文章是第四课第一部分的学习笔记:Ethash算法。
这节课介绍的是以太坊非常核心的挖矿算法。
在介绍Ethash算法之前,先讲一些背景知识。其实区块链技术主要是解决一个共识的问题,而共识是一个层次很丰富的概念,这里把范畴缩小,只讨论区块链中的共识。
什么是共识?
在区块链中,共识是指哪个节点有记账权。网络中有多个节点,理论上都有记账权,首先面临的问题就是,到底谁来记帐。另一个问题,交易一定是有顺序的,即谁在前,前在后。这样可以解决双花问题。区块链中的共识机制就是解决这两个问题,谁记帐和交易的顺序。
什么是工作量证明算法
为了决定众多节点中谁来记帐,可以有多种方案。其中,工作量证明就让节点去算一个哈希值,满足难度目标值的胜出。这个过程只能通过枚举计算,谁算的快,谁获胜的概率大。收益跟节点的工作量有关,这就是工作量证明算法。
为什么要引入工作量证明算法?
Hash Cash 由Adam Back 在1997年发表,中本聪首次在比特币中应用来解决共识问题。
它最初用来解决垃圾邮件问题。
其主要设计思想是通过暴力搜索,找到一种Block头部组合(通过调整nonce)使得嵌套的SHA256单向散列值输出小于一个特定的值(Target)。
这个算法是计算密集型算法,一开始从CPU挖矿,转而为GPU,转而为FPGA,转而为ASIC,从而使得算力变得非常集中。
算力集中就会带来一个问题,若有一个矿池的算力达到51%,则它就会有作恶的风险。这是比特币等使用工作量证明算法的系统的弊端。而以太坊则吸取了这个教训,进行了一些改进,诞生了Ethash算法。
Ethash算法吸取了比特币的教训,专门设计了非常不利用计算的模型,它采用了I/O密集的模型,I/O慢,计算再快也没用。这样,对专用集成电路则不是那么有效。
该算法对GPU友好。一是考虑如果只支持CPU,担心易被木马攻击;二是现在的显存都很大。
轻型客户端的算法不适于挖矿,易于验证;快速启动
算法中,主要依赖于Keccake256 。
数据源除了传统的Block头部,还引入了随机数阵列DAG(有向非循环图)(Vitalik提出)
种子值很小。根据种子值生成缓存值,缓存层的初始值为16M,每个世代增加128K。
在缓存层之下是矿工使用的数据值,数据层的初始值是1G,每个世代增加8M。整个数据层的大小是128Bytes的素数倍。
框架主要分为两个部分,一是DAG的生成,二是用Hashimoto来计算最终的结果。
DAG分为三个层次,种子层,缓存层,数据层。三个层次是逐渐增大的。
种子层很小,依赖上个世代的种子层。
缓存层的第一个数据是根据种子层生成的,后面的根据前面的一个来生成,它是一个串行化的过程。其初始大小是16M,每个世代增加128K。每个元素64字节。
数据层就是要用到的数据,其初始大小1G,现在约2个G,每个元素128字节。数据层的元素依赖缓存层的256个元素。
整个流程是内存密集型。
首先是头部信息和随机数结合在一起,做一个Keccak运算,获得初始的单向散列值Mix[0],128字节。然后,通过另外一个函数,映射到DAG上,获取一个值,再与Mix[0]混合得到Mix[1],如此循环64次,得到Mix[64],128字节。
接下来经过后处理过程,得到 mix final 值,32字节。(这个值在前面两个小节《 009:GHOST协议 》、《 010:搭建测试网络 》都出现过)
再经过计算,得出结果。把它和目标值相比较,小于则挖矿成功。
难度值大,目标值小,就越难(前面需要的 0 越多)。
这个过程也是挖矿难,验证容易。
为防止矿机,mix function函数也有更新过。
难度公式见课件截图。
根据上一个区块的难度,来推算下一个。
从公式看出,难度由三部分组成,首先是上一区块的难度,然后是线性部分,最后是非线性部分。
非线性部分也叫难度炸弹,在过了一个特定的时间节点后,难度是指数上升。如此设计,其背后的目的是,在以太坊的项目周期中,在大都会版本后的下一个版本中,要转换共识,由POW变为POW、POS混合型的协议。基金会的意思可能是使得挖矿变得没意思。
难度曲线图显示,2017年10月,难度有一个大的下降,奖励也由5个变为3个。
本节主要介绍了Ethash算法,不足之处,请批评指正。
6. 区块链 --- 共识算法
PoW算法是一种防止分布式服务资源被滥用、拒绝服务攻击的机制。它要求节点进行适量消耗时间和资源的复杂运算,并且其运算结果能被其他节点快速验算,以耗用时间、能源做担保,以确保服务与资源被真正的需求所使用。
PoW算法中最基本的技术原理是使用哈希算法。假设求哈希值Hash(r),若原始数据为r(raw),则运算结果为R(Result)。
R = Hash(r)
哈希函数Hash()的特性是,对于任意输入值r,得出结果R,并且无法从R反推回r。当输入的原始数据r变动1比特时,其结果R值完全改变。在比特币的PoW算法中,引入算法难度d和随机值n,得到以下公式:
Rd = Hash(r+n)
该公式要求在填入随机值n的情况下,计算结果Rd的前d字节必须为0。由于哈希函数结果的未知性,每个矿工都要做大量运算之后,才能得出正确结果,而算出结果广播给全网之后,其他节点只需要进行一次哈希运算即可校验。PoW算法就是采用这种方式让计算消耗资源,而校验仅需一次。
PoS算法要求节点验证者必须质押一定的资金才有挖矿打包资格,并且区域链系统在选定打包节点时使用随机的方式,当节点质押的资金越多时,其被选定打包区块的概率越大。
POS模式下,每个币每天产生1币龄,比如你持有100个币,总共持有了30天,那么,此时你的币龄就为3000。这个时候,如果你验证了一个POS区块,你的币龄就会被清空为0,同时从区块中获得相对应的数字货币利息。
节点通过PoS算法出块的过程如下:普通的节点要成为出块节点,首先要进行资产的质押,当轮到自己出块时,打包区块,然后向全网广播,其他验证节点将会校验区块的合法性。
DPoS算法和PoS算法相似,也采用股份和权益质押。
但不同的是,DPoS算法采用委托质押的方式,类似于用全民选举代表的方式选出N个超级节点记账出块。
选民把自己的选票投给某个节点,如果某个节点当选记账节点,那么该记账节点往往在获取出块奖励后,可以采用任意方式来回报自己的选民。
这N个记账节点将轮流出块,并且节点之间相互监督,如果其作恶,那么会被扣除质押金。
通过信任少量的诚信节点,可以去除区块签名过程中不必要的步骤,提高了交易的速度。
拜占庭问题:
拜占庭是古代东罗马帝国的首都,为了防御在每块封地都驻扎一支由单个将军带领的军队,将军之间只能靠信差传递消息。在战争时,所有将军必须达成共识,决定是否共同开战。
但是,在军队内可能有叛徒,这些人将影响将军们达成共识。拜占庭将军问题是指在已知有将军是叛徒的情况下,剩余的将军如何达成一致决策的问题。
BFT:
BFT即拜占庭容错,拜占庭容错技术是一类分布式计算领域的容错技术。拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或中断以及遭到恶意攻击等原因,计算机和网络可能出现不可预料的行为。拜占庭容错技术被设计用来处理这些异常行为,并满足所要解决的问题的规范要求。
拜占庭容错系统 :
发生故障的节点被称为 拜占庭节点 ,而正常的节点即为 非拜占庭节点 。
假设分布式系统拥有n台节点,并假设整个系统拜占庭节点不超过m台(n ≥ 3m + 1),拜占庭容错系统需要满足如下两个条件:
另外,拜占庭容错系统需要达成如下两个指标:
PBFT即实用拜占庭容错算法,解决了原始拜占庭容错算法效率不高的问题,算法的时间复杂度是O(n^2),使得在实际系统应用中可以解决拜占庭容错问题
PBFT是一种状态机副本复制算法,所有的副本在一个视图(view)轮换的过程中操作,主节点通过视图编号以及节点数集合来确定,即:主节点 p = v mod |R|。v:视图编号,|R|节点个数,p:主节点编号。
PBFT算法的共识过程如下:客户端(Client)发起消息请求(request),并广播转发至每一个副本节点(Replica),由其中一个主节点(Leader)发起提案消息pre-prepare,并广播。其他节点获取原始消息,在校验完成后发送prepare消息。每个节点收到2f+1个prepare消息,即认为已经准备完毕,并发送commit消息。当节点收到2f+1个commit消息,客户端收到f+1个相同的reply消息时,说明客户端发起的请求已经达成全网共识。
具体流程如下 :
客户端c向主节点p发送<REQUEST, o, t, c>请求。o: 请求的具体操作,t: 请求时客户端追加的时间戳,c:客户端标识。REQUEST: 包含消息内容m,以及消息摘要d(m)。客户端对请求进行签名。
主节点收到客户端的请求,需要进行以下交验:
a. 客户端请求消息签名是否正确。
非法请求丢弃。正确请求,分配一个编号n,编号n主要用于对客户端的请求进行排序。然后广播一条<<PRE-PREPARE, v, n, d>, m>消息给其他副本节点。v:视图编号,d客户端消息摘要,m消息内容。<PRE-PREPARE, v, n, d>进行主节点签名。n是要在某一个范围区间内的[h, H],具体原因参见 垃圾回收 章节。
副本节点i收到主节点的PRE-PREPARE消息,需要进行以下交验:
a. 主节点PRE-PREPARE消息签名是否正确。
b. 当前副本节点是否已经收到了一条在同一v下并且编号也是n,但是签名不同的PRE-PREPARE信息。
c. d与m的摘要是否一致。
d. n是否在区间[h, H]内。
非法请求丢弃。正确请求,副本节点i向其他节点包括主节点发送一条<PREPARE, v, n, d, i>消息, v, n, d, m与上述PRE-PREPARE消息内容相同,i是当前副本节点编号。<PREPARE, v, n, d, i>进行副本节点i的签名。记录PRE-PREPARE和PREPARE消息到log中,用于View Change过程中恢复未完成的请求操作。
主节点和副本节点收到PREPARE消息,需要进行以下交验:
a. 副本节点PREPARE消息签名是否正确。
b. 当前副本节点是否已经收到了同一视图v下的n。
c. n是否在区间[h, H]内。
d. d是否和当前已收到PRE-PPREPARE中的d相同
非法请求丢弃。如果副本节点i收到了2f+1个验证通过的PREPARE消息,则向其他节点包括主节点发送一条<COMMIT, v, n, d, i>消息,v, n, d, i与上述PREPARE消息内容相同。<COMMIT, v, n, d, i>进行副本节点i的签名。记录COMMIT消息到日志中,用于View Change过程中恢复未完成的请求操作。记录其他副本节点发送的PREPARE消息到log中。
主节点和副本节点收到COMMIT消息,需要进行以下交验:
a. 副本节点COMMIT消息签名是否正确。
b. 当前副本节点是否已经收到了同一视图v下的n。
c. d与m的摘要是否一致。
d. n是否在区间[h, H]内。
非法请求丢弃。如果副本节点i收到了2f+1个验证通过的COMMIT消息,说明当前网络中的大部分节点已经达成共识,运行客户端的请求操作o,并返回<REPLY, v, t, c, i, r>给客户端,r:是请求操作结果,客户端如果收到f+1个相同的REPLY消息,说明客户端发起的请求已经达成全网共识,否则客户端需要判断是否重新发送请求给主节点。记录其他副本节点发送的COMMIT消息到log中。
如果主节点作恶,它可能会给不同的请求编上相同的序号,或者不去分配序号,或者让相邻的序号不连续。备份节点应当有职责来主动检查这些序号的合法性。
如果主节点掉线或者作恶不广播客户端的请求,客户端设置超时机制,超时的话,向所有副本节点广播请求消息。副本节点检测出主节点作恶或者下线,发起View Change协议。
View Change协议 :
副本节点向其他节点广播<VIEW-CHANGE, v+1, n, C , P , i>消息。n是最新的stable checkpoint的编号, C 是 2f+1验证过的CheckPoint消息集合, P 是当前副本节点未完成的请求的PRE-PREPARE和PREPARE消息集合。
当主节点p = v + 1 mod |R|收到 2f 个有效的VIEW-CHANGE消息后,向其他节点广播<NEW-VIEW, v+1, V , O >消息。 V 是有效的VIEW-CHANGE消息集合。 O 是主节点重新发起的未经完成的PRE-PREPARE消息集合。PRE-PREPARE消息集合的选取规则:
副本节点收到主节点的NEW-VIEW消息,验证有效性,有效的话,进入v+1状态,并且开始 O 中的PRE-PREPARE消息处理流程。
在上述算法流程中,为了确保在View Change的过程中,能够恢复先前的请求,每一个副本节点都记录一些消息到本地的log中,当执行请求后副本节点需要把之前该请求的记录消息清除掉。
最简单的做法是在Reply消息后,再执行一次当前状态的共识同步,这样做的成本比较高,因此可以在执行完多条请求K(例如:100条)后执行一次状态同步。这个状态同步消息就是CheckPoint消息。
副本节点i发送<CheckPoint, n, d, i>给其他节点,n是当前节点所保留的最后一个视图请求编号,d是对当前状态的一个摘要,该CheckPoint消息记录到log中。如果副本节点i收到了2f+1个验证过的CheckPoint消息,则清除先前日志中的消息,并以n作为当前一个stable checkpoint。
这是理想情况,实际上当副本节点i向其他节点发出CheckPoint消息后,其他节点还没有完成K条请求,所以不会立即对i的请求作出响应,它还会按照自己的节奏,向前行进,但此时发出的CheckPoint并未形成stable。
为了防止i的处理请求过快,设置一个上文提到的 高低水位区间[h, H] 来解决这个问题。低水位h等于上一个stable checkpoint的编号,高水位H = h + L,其中L是我们指定的数值,等于checkpoint周期处理请求数K的整数倍,可以设置为L = 2K。当副本节点i处理请求超过高水位H时,此时就会停止脚步,等待stable checkpoint发生变化,再继续前进。
在区块链场景中,一般适合于对强一致性有要求的私有链和联盟链场景。例如,在IBM主导的区块链超级账本项目中,PBFT是一个可选的共识协议。在Hyperledger的Fabric项目中,共识模块被设计成可插拔的模块,支持像PBFT、Raft等共识算法。
Raft基于领导者驱动的共识模型,其中将选举一位杰出的领导者(Leader),而该Leader将完全负责管理集群,Leader负责管理Raft集群的所有节点之间的复制日志。
下图中,将在启动过程中选择集群的Leader(S1),并为来自客户端的所有命令/请求提供服务。 Raft集群中的所有节点都维护一个分布式日志(复制日志)以存储和提交由客户端发出的命令(日志条目)。 Leader接受来自客户端的日志条目,并在Raft集群中的所有关注者(S2,S3,S4,S5)之间复制它们。
在Raft集群中,需要满足最少数量的节点才能提供预期的级别共识保证, 这也称为法定人数。 在Raft集群中执行操作所需的最少投票数为 (N / 2 +1) ,其中N是组中成员总数,即 投票至少超过一半 ,这也就是为什么集群节点通常为奇数的原因。 因此,在上面的示例中,我们至少需要3个节点才能具有共识保证。
如果法定仲裁节点由于任何原因不可用,也就是投票没有超过半数,则此次协商没有达成一致,并且无法提交新日志。
数据存储:Tidb/TiKV
日志:阿里巴巴的 DLedger
服务发现:Consul& etcd
集群调度:HashiCorp Nomad
只能容纳故障节点(CFT),不容纳作恶节点
顺序投票,只能串行apply,因此高并发场景下性能差
Raft通过解决围绕Leader选举的三个主要子问题,管理分布式日志和算法的安全性功能来解决分布式共识问题。
当我们启动一个新的Raft集群或某个领导者不可用时,将通过集群中所有成员节点之间协商来选举一个新的领导者。 因此,在给定的实例中,Raft集群的节点可以处于以下任何状态: 追随者(Follower),候选人(Candidate)或领导者(Leader)。
系统刚开始启动的时候,所有节点都是follower,在一段时间内如果它们没有收到Leader的心跳信号,follower就会转化为Candidate;
如果某个Candidate节点收到大多数节点的票,则这个Candidate就可以转化为Leader,其余的Candidate节点都会回到Follower状态;
一旦一个Leader发现系统中存在一个Leader节点比自己拥有更高的任期(Term),它就会转换为Follower。
Raft使用基于心跳的RPC机制来检测何时开始新的选举。 在正常期间, Leader 会定期向所有可用的 Follower 发送心跳消息(实际中可能把日志和心跳一起发过去)。 因此,其他节点以 Follower 状态启动,只要它从当前 Leader 那里收到周期性的心跳,就一直保持在 Follower 状态。
当 Follower 达到其超时时间时,它将通过以下方式启动选举程序:
根据 Candidate 从集群中其他节点收到的响应,可以得出选举的三个结果。
共识算法的实现一般是基于复制状态机(Replicated state machines),何为 复制状态机 :
简单来说: 相同的初识状态 + 相同的输入 = 相同的结束状态 。不同节点要以相同且确定性的函数来处理输入,而不要引入一下不确定的值,比如本地时间等。使用replicated log是一个很不错的注意,log具有持久化、保序的特点,是大多数分布式系统的基石。
有了Leader之后,客户端所有并发的请求可以在Leader这边形成一个有序的日志(状态)序列,以此来表示这些请求的先后处理顺序。Leader然后将自己的日志序列发送Follower,保持整个系统的全局一致性。注意并不是强一致性,而是 最终一致性 。
日志由有序编号(log index)的日志条目组成。每个日志条目包含它被创建时的任期号(term),和日志中包含的数据组成,日志包含的数据可以为任何类型,从简单类型到区块链的区块。每个日志条目可以用[ term, index, data]序列对表示,其中term表示任期, index表示索引号,data表示日志数据。
Leader 尝试在集群中的大多数节点上执行复制命令。 如果复制成功,则将命令提交给集群,并将响应发送回客户端。类似两阶段提交(2PC),不过与2PC的区别在于,leader只需要超过一半节点同意(处于工作状态)即可。
leader 、 follower 都可能crash,那么 follower 维护的日志与 leader 相比可能出现以下情况
当出现了leader与follower不一致的情况,leader强制follower复制自己的log, Leader会从后往前试 ,每次AppendEntries失败后尝试前一个日志条目(递减nextIndex值), 直到成功找到每个Follower的日志一致位置点(基于上述的两条保证),然后向后逐条覆盖Followers在该位置之后的条目 。所以丢失的或者多出来的条目可能会持续多个任期。
要求候选人的日志至少与其他节点一样最新。如果不是,则跟随者节点将不投票给候选者。
意味着每个提交的条目都必须存在于这些服务器中的至少一个中。如果候选人的日志至少与该多数日志中的其他日志一样最新,则它将保存所有已提交的条目,避免了日志回滚事件的发生。
即任一任期内最多一个leader被选出。这一点非常重要,在一个复制集中任何时刻只能有一个leader。系统中同时有多余一个leader,被称之为脑裂(brain split),这是非常严重的问题,会导致数据的覆盖丢失。在raft中,两点保证了这个属性:
因此, 某一任期内一定只有一个leader 。
当集群中节点的状态发生变化(集群配置发生变化)时,系统容易受到系统故障。 因此,为防止这种情况,Raft使用了一种称为两阶段的方法来更改集群成员身份。 因此,在这种方法中,集群在实现新的成员身份配置之前首先更改为中间状态(称为联合共识)。 联合共识使系统即使在配置之间进行转换时也可用于响应客户端请求,它的主要目的是提升分布式系统的可用性。
7. 拼多多最后一刀老是出福卡
这属于很多用户感受到的通病。
在用户参与拼多多砍一刀的过程里,存在着诸如显示余额不透明、看不到变动等情况,这自然会让用户产生质疑。这也就意味着,消费者在平台规则下积极参与却无进展时,可以合理怀疑平台存在流程不清晰甚至是虚假宣传的问题,这种怀疑虽然暂时还没有直接的证据,但作为利益相关方的拼多多也很难自证清白。
拼多多砍一刀事件并不是一个新鲜的话题,但为什么到现在问题还没有得到根本性的解决呢?拼多多到底是不是在利用算法钻法律漏洞,侵犯消费者合法权益?它有没有“算法作恶”、“大数据杀熟”?这些涉及专业、监管的问题将会随着国内监管环境的成熟而逐渐明朗。
不管怎样,希望拼多多方面能够重视起对于消费者权益的保护,尽管现如今有很多的“漏洞”可以让网络平台低成本获客、吸引关注,但其中肯定是有着一些说不清道不明的地方,在有效监管落地之前,平台方不能抱有侥幸心理,还需要给自己上好“紧箍咒”才行。
8. pb ft算法最大的容错节点数量是什么
咨询记录 · 回答于2021-06-26
9. 如何论证:“人工智能不会引起伦理问题”这句话
人工智能时代加速到来,算法决策兴起
第三次AI(人工智能,以下简称AI)浪潮已经开启。在技术层面,有算法的进步。当1956年人工智能开始起步的时候,人们更多是在说人工智能;在第二次浪潮期间,机器学习成为主流;这一次则是深度学习,是能够自我学习、自我编程的学习算法,可以用来解决更复杂的任务。此外,计算能力的提升,包括现在的量子计算机,以及越来越普遍的大数据,对人工智能的作用和价值也非常大,使得更复杂的算法成为可能。在应用层面,从语音识别、机器翻译到医疗诊断、自动驾驶,AI应用在不断加深、不断成熟,甚至已经开始超越人类,引发人们关于失业的担忧。同时也让人们开始期待具有通用智能的终极算法。在商业层面,面对可预期的好处和利益,国内外主流的互联网公司如腾讯、谷歌等都开始向AI看齐,AI领域的创业和投资在如火如荼地进行着。全球已经有超过1000家AI公司,市场规模增长空间是非常大的,未来八年内将超过350亿美元。
在此背景下,各种互联网服务中越来越多地看到人工智能的影子,人们日益生活在算法之下,算法决策开始介入甚至主导越来越多的人类社会事务。比如,人们在互联网上获取的内容,诸如新闻、音乐、视频、广告等等,以及购买的商品,很多都是推荐引擎个性化推荐给用户的,而不是有人在背后决策。再比如,在金融领域,算法可以决定是否给某个用户发放贷款,以及具体的贷款额度。此外,一家美国投资公司早在几年前就开始研发管理公司的AI系统,招聘、投资、重大决策等公司事务都由这个AI系统来管理并决策。也许在未来,一家公司的成功不再主要依赖于拥有像乔布斯那样伟大的CEO,而是一个足够智能足够强大的AI系统。更有甚者,英国、欧盟等都在大力推动人工智能技术在政务和民生方面的更深应用,政府服务不仅是数字化,而且是智能化。
人工智能伦理问题日益凸显
人工智能的持续进步和广泛应用带来的好处将是巨大的。但是,为了让AI真正有益于人类社会,我们也不能忽视AI背后的伦理问题。
第一个是算法歧视。可能人们会说,算法是一种数学表达,是很客观的,不像人类那样有各种偏见、情绪,容易受外部因素影响,怎么会产生歧视呢?之前的一些研究表明,法官在饿着肚子的时候,倾向于对犯罪人比较严厉,判刑也比较重,所以人们常说,正义取决于法官有没有吃早餐。算法也正在带来类似的歧视问题。比如,一些图像识别软件之前还将黑人错误地标记为“黑猩猩”或者“猿猴”。此外,2016年3月,微软公司在美国的Twitter上上线的聊天机器人Tay在与网民互动过程中,成为了一个集性别歧视、种族歧视等于一身的“不良少女”。随着算法决策越来越多,类似的歧视也会越来越多。而且,算法歧视会带来危害。一方面,如果将算法应用在犯罪评估、信用贷款、雇佣评估等关切人身利益的场合,一旦产生歧视,必然危害个人权益。另一方面,深度学习是一个典型的“黑箱”算法,连设计者可能都不知道算法如何决策,要在系统中发现有没有存在歧视和歧视根源,在技术上是比较困难的。
为什么算法并不客观,可能暗藏歧视?算法决策在很多时候其实就是一种预测,用过去的数据预测未来的趋势。算法模型和数据输入决定着预测的结果。因此,这两个要素也就成为算法歧视的主要来源。一方面,算法在本质上是“以数学方式或者计算机代码表达的意见”,包括其设计、目的、成功标准、数据使用等等都是设计者、开发者的主观选择,设计者和开发者可能将自己所怀抱的偏见嵌入算法系统。另一方面,数据的有效性、准确性,也会影响整个算法决策和预测的准确性。比如,数据是社会现实的反映,训练数据本身可能是歧视性的,用这样的数据训练出来的AI系统自然也会带上歧视的影子;再比如,数据可能是不正确、不完整或者过时的,带来所谓的“垃圾进,垃圾出”的现象;更进一步,如果一个AI系统依赖多数学习,自然不能兼容少数族裔的利益。此外,算法歧视可能是具有自我学习和适应能力的算法在交互过程中习得的,AI系统在与现实世界交互过程中,可能没法区别什么是歧视,什么不是歧视。
更进一步,算法倾向于将歧视固化或者放大,使歧视自我长存于整个算法里面。算法决策是在用过去预测未来,而过去的歧视可能会在算法中得到巩固并在未来得到加强,因为错误的输入形成的错误输出作为反馈,进一步加深了错误。最终,算法决策不仅仅会将过去的歧视做法代码化,而且会创造自己的现实,形成一个“自我实现的歧视性反馈循环”。包括预测性警务、犯罪风险评估、信用评估等都存在类似问题。归根到底,算法决策其实缺乏对未来的想象力,而人类社会的进步需要这样的想象力。
第二个是隐私忧虑。很多AI系统,包括深度学习,都是大数据学习,需要大量的数据来训练学习算法。数据已经成了AI时代的“新石油”。这带来新的隐私忧虑。一方面,如果在深度学习过程中使用大量的敏感数据,这些数据可能会在后续被披露出去,对个人的隐私会产生影响。所以国外的AI研究人员已经在提倡如何在深度学习过程中保护个人隐私。另一方面,考虑到各种服务之间大量交易数据,数据流动不断频繁,数据成为新的流通物,可能削弱个人对其个人数据的控制和管理。当然,现在已经有一些可以利用的工具来在AI时代加强隐私保护,诸如经规划的隐私、默认的隐私、个人数据管理工具、匿名化、假名化、差别化隐私、决策矩阵等等都是在不断发展和完善的一些标准,值得在深度学习和AI产品设计中提倡。
第三个是责任与安全。霍金、施密特等之前都警惕强人工智能或者超人工智能可能威胁人类生存。但在具体层面,AI安全包括行为安全和人类控制。从阿西莫夫提出的机器人三定律到2017年阿西洛马会议提出的23条人工智能原则,AI安全始终是人们关注的一个重点,美国、英国、欧盟等都在着力推进对自动驾驶汽车、智能机器人的安全监管。此外,安全往往与责任相伴。如果自动驾驶汽车、智能机器人造成人身、财产损害,谁来承担责任?如果按照现有的法律责任规则,因为系统是自主性很强的,它的开发者是难以预测的,包括黑箱的存在,很难解释事故的原因,未来可能会产生责任鸿沟
第四个是机器人权利,即如何界定AI的人道主义待遇。随着自主智能机器人越来越强大,那么它们在人类社会到底应该扮演什么样的角色呢?自主智能机器人到底在法律上是什么?自然人?法人?动物?物?我们可以虐待、折磨或者杀死机器人吗?欧盟已经在考虑要不要赋予智能机器人“电子人”的法律人格,具有权利义务并对其行为负责。这个问题未来值得更多探讨。此外,越来越多的教育类、护理类、服务类的机器人在看护孩子、老人和病人,这些交互会对人的行为产生什么样的影响,需要得到进一步研究。
构建算法治理的内外部约束机制
一是合伦理的AI设计,即要将人类社会的法律、道德等规范和价值嵌入AI系统。这主要是电气和电子工程师协会、英国等在提倡。可以分三步来实现。第一步是发现需要嵌入AI系统的规范和价值,存在道德过载和价值位阶的问题,即哪些价值优先,哪些价值在后。第二步是将所发现的规范和价值加入AI系统,需要方法论,有自上而下和自下而上两种路径。第三步是对已经嵌入AI系统的规范和价值进行评估,看其是否和人类社会的相一致。一方面是使用者评估,需要建立对AI的信任,比如当AI系统的行为超出预期时,要向用户解释为什么这么做。另一方面是主管部门、行业组织等第三方评估,需要界定价值一致性和相符性标准,以及AI可信赖标准。
但是需要解决两个困境。其一是伦理困境。比如,在来不及刹车的情况下,如果自动驾驶汽车往前开就会把三个闯红灯的人撞死,但如果转向就会碰到障碍物使车上的五个人死亡。此时,车辆应当如何选择?在面对类似电车困境的问题时,功利主义和绝对主义会给出不同的道德选择,这种冲突在人类社会都是没有解决的,在自动化的场景下也会遇到这样的问题
其二是价值对接的问题。现在的很多机器人都是单一目的的,扫地机器人就会一心一意地扫地,服务机器人就会一心一意给你去拿咖啡,诸如此类。但机器人的行为真的是我们人类想要的吗?这就产生了价值对接问题。就像Midas国王想要点石成金的技术,结果当他拥有这个法宝的时候,他碰到的所有东西包括食物都会变成金子,最后却被活活饿死。为什么呢?因为这个法宝并没有理解Midas国王的真正意图,那么机器人会不会给我们人类带来类似的情况呢?这个问题值得深思。所以有人提出来兼容人类的AI,包括三项原则,一是利他主义,即机器人的唯一目标是最大化人类价值的实现;二是不确定性,即机器人一开始不确定人类价值是什么;三是考虑人类,即人类行为提供了关于人类价值的信息,从而帮助机器人确定什么是人类所希望的价值。
二是在AI研发中贯彻伦理原则。一方面,针对AI研发活动,AI研发人员需要遵守一些基本的伦理准则,包括有益性、不作恶、包容性的设计、多样性、透明性,以及隐私的保护,等等。另一方面,需要建立AI伦理审查制度,伦理审查应当是跨学科的,多样性的,对AI技术和产品的伦理影响进行评估并提出建议。
三是对算法进行必要的监管,避免算法作恶。现在的算法确实是越来越复杂,包括决策的影响都是越来越重大,未来可能需要对算法进行监管。可能的监管措施包括标准制定,涉及分类、性能标准、设计标准、责任标准等等;透明性方面,包括算法自身的代码透明性,以及算法决策透明性,国外现在已经有OpenAI等一些人工智能开源运动。此外,还有审批制度,比如对于自动驾驶汽车、智能机器人等采用的算法,未来可能需要监管部门进行事先审批,如果没有经过审批就不能向市场推出。
四是针对算法决策和歧视,以及造成的人身财产损害,需要提供法律救济。对于算法决策,一方面需要确保透明性,如果用自动化的手段进行决策决定,则需要告知用户,用户有知情权,并且在必要时需要向用户提供一定的解释;另一方面需要提供申诉的机制。对于机器人造成的人身财产损害,一方面,无辜的受害人应该得到救助;另一方面,对于自动驾驶汽车、智能机器人等带来的责任挑战,严格责任、差别化责任、强制保险和赔偿基金、智能机器人法律人格等都是可以考虑的救济措施。
在今天这个人工智能快速发展,人类在诸如围棋、图像识别、语音识别等等领域开始落后于人工智能的时代,对人工智能进行伦理测试同样重要,包括道德代码、隐私、正义、有益性、安全、责任等等,都是十分重要的。现在的AI界更多是工程师在参与,缺乏哲学、伦理学、法学等其他社会学科的参与,未来这样跨学科的AI伦理测试需要加强研究。因为在某种意义上我们已经不是在制造一个被动的简单工具,而是在设计像人一样具有感知、认知、决策等能力的事物,你可以称其为“更复杂的工具”,但不可否认,我们需要确保这样的复杂工具进入人类社会以后和人类的价值规范及需求相一致。
10. Lava是如何防止钱包节点的作恶行为的
为了防止钱包节点的作恶行为,Lava 在黑名单层引入了 CDF 算法(Cumulative Difficulty Algorithm)。 从数学建模角度来讲,这算法将大大提高恶意节点的作恶成本。除此之外,Lava 的可信层具有额外的安全措施,通过在网络中将整个节点组成各个子集合的手段,最大程度上的保证安全性。