写点什么

重塑金融体系,图灵奖得主的区块链平台开放公测

  • 2019-05-07
  • 本文字数:8539 字

    阅读完需:约 28 分钟

重塑金融体系,图灵奖得主的区块链平台开放公测

这是多年不遇的良机


今天,重塑全球金融体系的机遇就摆在人们面前。


今天的数据网络快如闪电:信息可以在几分之一秒内传遍全球,成本却可忽略不计。


但金钱的流速却要慢上许多。一笔简单的金融交易可能需要数天才能结算完成。金融交易的成本也十分高昂:全球金融体系每年要在各项费用上浪费 5 万亿美元之多。此外,地球上有 22 亿人完全无法获得现代金融服务:仅仅他们的交易规模太小,无法为银行带来利润。


Algorand 项目创始人、图灵奖得主 Silvio Micali 表示:“如果有合适的技术,我们就能改变这一切。”

项目背景

Algorand 区块链平台已经在本月宣布开放公测。该项目由麻省理工学院教授、图灵奖得主 Silvio Micali 在 2017 年领导开发,这是一个完全分散、安全且可扩展的区块链,是一种分布式金融产品和服务平台,承诺其“永不分叉”。在 2018 年期间,该项目获得了约 6600 万美元的资金,包括 400 万美元种子轮。


Silvio 自 1983 年以来,一直任职于麻省理工学院电气工程和计算机科学系,研究密码学、零知识、伪随机生成、安全协议和机制设计。因在现代密码学和零知识证明方面的开创性贡献,在 2012 年与 Shafi Goldwasser 一起赢得了图灵奖。


据了解,Algorand 发展为开源协议,Micali 团队将放弃 Algorand 的 patent,将 Algorand 打造为开源社区项目,Algorand 也强调了社区建设的重要性。在首次邀请了几百用户进行测试后,目前已经开放公测,希望以此吸引到更多用户。

区块链的承诺

最近几年来,开发者和创新推动者已经预感到,区块链就是我们需要的技术;区块链是实现更高效、更具包容性的金融体系的关键基础。


简单来说,区块链是一个公共分类账。它是以区块为单位组织的一系列交易,确保了三大基本属性:


  1. 所有人都可以读取所有区块,因此区块成为了公共知识。

  2. 所有人都可以在新产生的区块中写入交易。

  3. 没有人可以改写区块中的交易或区块的顺序。


于是,区块链不需要像银行一样在一个中心机构中设立一个隐秘数据库,不需要让交易通过层层机密数据库来结算,而是建立一份可供所有人阅读的单一公共分类账本,其中所有人都能添加账目,但没有人可以改写其中的内容。


有了这些属性,区块链就有了无限的可能性。实际上,区块链技术可以带来更快、更廉价、更安全且无边界的经济体系

众所周知的三难问题

但直到现在,区块链的未来仍然基本停留在蓝图上。如果说区块链还只是口头上的巨人,最好的证据可能就是著名的区块链三难问题了。迄今为止超过 2000 个区块链项目都在面临这个问题的困扰:那就是现有的区块链设计只能实现以下三个属性中的最多两个:


  • 安全

  • 可扩展性

  • 去中心化


实际上,三难困境没有最优选择。没有去中心化,区块链就和现有的金融体系别无二致:依旧要由中心机构垄断,交易也都要保密。没有安全保障,记录交易的区块就可能消失:人们在交付货物或服务后可能会面临对方的付款烟消云散的灾难;债务记录可能会被删除;并且公共分类账本可能会被对手篡改以牟利。没有可扩展性,人们将只能在小型网络中交易;用户无法融入全球金融体系。正因如此,这几大基本属性哪一条都不能少,少了谁都是人们无法忍受的。

成本、速度和安全性

可以肯定的是,安全性、可扩展性和去中心化不是各自独立的变量,而是相互关联的。它们共同影响速度、安全性和成本这三个指标,而它们对个人和机构用户都很重要。


速度太慢的区块链难以扩展。但是通过增加成本来提升速度不是办法:交易成本太高的区块链也难以扩展。实际上,如果需要所有人来承担高额成本,那么很少会有人加入这个区块链。如果只由少数几个实体负担成本,那么系统将中心化。任何中心化系统本质上都是不安全的,因为少量几个目标比成百上千万的目标更容易攻击。


Silvio 表示:“这个三难问题只是历史遗留下来的产物,或者说它只是指出了要同时实现三大属性有多困难。今天,Algorand 激动地宣布,自己已经能够建立一个足以提供所有三种属性的区块链了。”同时,他发表了一篇博客,讲述了 Algorand 的核心技术,InfoQ 翻译了这些内容。

Algorand 的核心技术

区块链有两种不同的需求。首先是使区块链防篡改。这种需求已通过密码学中最简单和最古老的原语之一解决了:亦即单向散列函数。本质上,新生成区块的散列包含在下一个块中。所有区块链都使用这种方法,所以在这方面它们都是平等的。


第二个需求是生成新的区块:如何选择要附加到链上的新块。这才是真正的挑战,而不同的区块链有不同的手段。


新块应包含一组未出现在之前区块链中的有效交易。问题在于在任何时间点上,两个用户可能已经看到了相同的区块序列,但可能看到的新交易却是不一样的。情况就是如此,因为在分布式分类帐中,每笔交易都不会通过网络瞬间传播完毕。通常,它会从一位用户那里传输到少数其他用户,以此类推,直到该交易传遍整个网络。因此在每个时间点,由不同用户看到的新有效交易的集合就算是基本一致,也可能有微小的不同。


总之,用户 U 可能认为新区块应该是 BlockU,可用户 V 认为它应该是 BlockV。那么:谁眼中的那个新块应该附加到链上?

之前流行的方法及其致命缺陷

为了解决选择下一个区块的问题,已经涌现了大量方法:具体来说,它们包括工作量证明(POW)、委托权益证明(DPOS)以及保证金权益证明(BPOS)等。但所有这些方法都存在以下致命缺陷:

整个经济体系都要受体系中的一小部分成员摆布

这个缺陷是致命的,因为它影响到了安全性和去中心化属性。


让整个经济体系的命运受到一小部分成员的支配,这种做法就是一个定时炸弹。可以肯定的是,如果这些成员行为不端,他们会贬低体系中的所有资产,也包括他们自己的资产。但是,如果他们自己的资产只占整个经济体的一小部分,那么就可能很容易弥补他们的损失,通过一些手段获得不菲的利润,并对其他所有人造成巨大的损失。不应该让经济体中的一小部分成员控制整个经济体系。


让我解释一下之前的机制为什么会产生这种缺陷。

工作量证明(Proof-of-Work,POW)

第一种方法是工作量证明,最早由中本聪用在比特币上,并由其它许多区块链沿袭下来而闻名于世。在这种方法中,用户在很高的层级上竞相解决一个非常复杂的加密难题。第一个解决这个难题的用户有权将下一个区块附加到链上。工作量证明存在几个缺陷。


第一个缺陷:工作量证明不能扩展。工作量证明的速度非常缓慢。比特币的加密难题太难解决了,无论有多少矿工参与计算,也连 10 分钟算出一个结果都难以保证。速度快但成本高昂可以理解,速度缓慢还成本高昂就很难接受了。世界这么大,每 10 分钟才有一区块的交易是远远不够的。


第二个缺陷:工作量证明最终催生了事实上的中心化体系。工作量证明导致了严重的权力集中现象。这种中心化的状况是工作量证明既昂贵又浪费资源的后果。矿工投入的计算量——也就是即用户解决加密难题的开销——庞大得令人震惊。今天的挖矿工作使用整机柜的专用硬件,并消耗大量的电力。每次只有一名矿工赢得比赛并产生新的区块,其他人的努力全都白白浪费掉了。如果不算挖出来的比特币的价值补贴,在比特币区块链上完成单笔交易的成本高达 20 美元左右。如果你想使用区块链进行日常交易,比如购买一块披萨,或者如果你想争取 22 亿缺少金融服务的潜在用户的话,显然用比特币是不行的。


如果一位普通用户试图用她的笔记本电脑解决加密问题,她注定会赔钱。无论输赢,她都必须支付为笔记本电脑计算所需的电力费用。这部分能耗可能不会很多,但她获胜的可能性非常小,所以她肯定要赔钱。


只有专业矿工才能获得微薄的利润,他们已经花费了大笔资本支出来购买机柜和高度专业的挖矿设备。因此只有他们会参与生成区块的竞争。此外,矿工还会与矿池合作。


如今,比特币区块链仅由三个矿池控制,以太坊的控制者只有两个矿池。如果他们愿意,或者他们被贿赂,这些矿池可以重写数据库:他们可以擦除区块或更改区块的顺序。工作量证明已经将人们所期望的去中心化体系转变成了高度中心化的系统。


第三个缺陷:工作量证明不安全。如前所述,任何中心化区块链,无论这种中心化是设计层面还是事实层面上的,它们都不安全。而且工作量证明还有其它漏洞,并且特别容易受到网络攻击。区块链本质上是通信协议,并且这些协议会在底层通信网络上运行。因此攻击者可以攻击协议——例如发送与预定消息不同的信息——或攻击通信网络本身——例如干扰路由器、电缆等。


工作量证明的脆弱性可能还被低估了,因为目前分析区块链安全性的方法存在缺陷。这类分析通常仅关注协议攻击,却忽略了网络攻击,尤其是在工作量证明的情况下后者可能是致命的。例如,在工作量证明区块链中,只要能将通信网络拆分一两个小时,攻击者就可以双重下单而不受惩罚。分区攻击若能成功,攻击者就会阻止属于 A 组的用户发送的消息到达 B 组的用户,反之亦然。网络分区攻击并没有引起太多关注,因为人们认为它太昂贵所以不实用。但是一旦收益足够高,发起这种网络攻击的成本也就能承受了。一个真正无国界的经济体系可能会价值数万亿美元。如果一位攻击者能够从攻击中非法获益数十亿美元,那么他可能很愿意“投资”数百万美元来做这笔勾当。


第四个缺陷:分叉。工作量证明的另一个缺点是它不可避免地存在分叉。每当两个或更多用户在几秒的时间差内解决各自的加密谜题时,区块链就会分叉,因为用户现在可能会看到下一个区块出现了多名候选者。一个分叉可能会存在一段时间,且其分支甚至可以通过添加新的区块来延长下去。但最终只有一个分支能存活下来,死亡分支中的所有区块都将消失。


分叉是不确定性和延迟的一个令人厌恶的源头。就算向你支付的款项出现在区块链的最新区块中,你也不能确认自己已经收到了款项,然后放心地交付商品了。这是因为某些分支可能会覆盖当前的链条,你的区块最后可能会进入死分支并消失掉。要确认自己收到付款,你需要等待一系列的区块都加上你的付款信息,以便最大程度降低软分叉出现的可能性,防止包含你收款信息的区块落到死分支上。


你得等多久? 有些人建议多等六个区块以确保你的交易数据保留在区块链上。如果你收到的款项数额巨大的话,还有人建议等待更长时间。因此为了对交易结果积累足够的信心,你要等待的时间不是十分钟,实际上需要等待数小时之久。


有些人建议把加密难题做得简单一些以加快交易速度,例如简化到可以每分钟而不是每 10 分钟找到一个解决方案。但这样做的话,矿工几乎同时算出各自答案的概率就会显著增加。这种体系可以应对偶尔的软分叉,但分叉太密集就不行了。


高昂的成本、速度缓慢和不确定性都是工作量证明方法的主要缺陷,但与其致命缺陷相比,这几条都是小问题了。


工作量证明的致命缺陷。回想一下前文讨论过的致命缺陷:整个经济体系受到一小部分用户的支配。


在工作量证明中,经济体系的这一小部分是矿工。由于矿工只拥有工作量证明区块链中的一小部分资金,因此这种区块链并不安全。

委托权益证明(Delegated Proof-of-Stake,DPoS)

另一种方法是委托权益证明(PoS),原理非常简单。区块链社区授权一些特殊用户,也就是代表,让他们至少在一段时间内选举新的区块。(例如在 EOS 中,代表人数为 21.)


因此,DPoS 从一开始就是中心化的。可以想象一开始代表们都是诚实的。但是想指望代表长期保持诚实很难,从而产生了风险。


这次的情况又是那样,整个经济体都受到一小部分成员的支配。实际上,在 DPoS 区块链中代表们可能只拥有系统中总资金的一小部分,但是当且仅当大多数代表都保持诚实时整个区块链才是安全的。


其它安全问题。就算强行假设所有代表都将永远保持诚实,他们也会很容易受到攻击。具体来说,它们可能会被拒绝服务(DoS)攻击击垮。在这类攻击中,攻击者用数以万计的垃圾邮件轰炸他的目标,导致该不幸用户的缓冲区溢出。如果代表受到这种轰炸,他将无法履行其职责,无法将新的有效交易整理到下一个区块。于是区块链将陷入停顿。


DoS 攻击非常便宜,可以快速对多达上千人发起打击。由于代表资格是公开的,就算他们的资格只持续一天或一小时或一分钟,一位有决心的攻击者也可能通过快速的 DoS 攻击击倒所有代表。

保证金权益证明(Bonded Proof-of-Stake,BPoS)

Bonded PoS 允许 20 个用户、200 个用户,乃至尽可能多的人拿出一些钱来放到桌上——之后他们就不能再动这笔钱了,这一桌子钱就成了一种保证金。随后这些人代表所有人选择下一个区块。如果他们行为不端,他们的钱就会被没收。


这种方法有效吗?


我问一个更简单的问题:你能拿出多少可支配收入放到保证金里? 答案是很少。因此 BPoS 机制下,拥有雄厚资产的大盗贼实际上可以轻松地掏出大笔金额放在桌面上,就是为了控制区块链。


然后呢?如果他们行为不端就会损失保证金。但是真正去中心化、可扩展且安全的区块链应能保护数以万亿美元计的资产。当恶意用户可以通过行为不端赚取数十亿美元时,你认为他可能会在乎那几百万美元吗? 这只是做生意的代价,一个很小的代价而已。


于是在 BPoS 中,我们也面临同样的致命缺陷:整个经济体受到一小部分成员的支配。在 BPoS 中这一小部分成员就是掏出保证金的那些代表。


总之,现有的方法存在很多缺点。我们需要更好的设计。

Algorand 的逻辑和纯粹的权益证明

Algorand 的逻辑很简单:它将整个经济体的安全性与大多数成员的诚实度关联起来,使少数成员无法控制整个经济体的命运。


Algorand 基于新的权益证明:纯粹权益证明(Pure PoS)。本质上讲,Pure PoS 不是通过罚款的威慑来保持用户诚实的。相比之下,它的设计是让拥有少量资金的成员无法作弊,而拥有大部分资金的成员要作弊毫无意义。


在 Algorand 中没有保证金。所有的资金都在它们应该所处的位置:也就是在你的钱包里、在你的手头准备花出去,或者在 Algorand 区块链为你提供的各种金融工具中。当你考虑系统中的所有资金时,不管它们位于何处,只要大部分资金都在诚实的用户手中,整个系统就是安全的。


正如我们所说,手持一小部分资金的成员不可能损害整个系统,而持有大多数资金的用户要行为不端就会让自己的资产贬值,显然是不可理喻的。


例如,在 PoW 或 BPoS 中,少数用户可以阻止其他用户交易。而在 Algorand 中,只有大部分资金的所有者才能阻止其他用户交易。但如果他们这样做,区块链货币的声誉将受到极大的损害,货币将不再被普遍接受,其购买力将大大降低。对于大户来说这不是什么好结果。

实现纯粹的 PoS

接下来看看 Algorand 如何使用 PPoS 机制来选择下一个区块。还记得三难问题吗? 我们希望区块生成机制同时具有可扩展性、安全性和去中心化属性。


在 Algorand 中,新的区块在一个非常高的层次上分两步生成。


  • 第一阶段,系统随机选择单个代币(token),其所有者是提出下一个区块申请的用户。

  • 第二阶段,在当前系统中的所有代币中选出 1000 个。这 1000 个代币的所有者被选为第 2 阶段“委员会”的成员,该委员会负责批准第一阶段那位用户提出的区块生成申请。


因此,委员会的一些成员可以被选举两次或更多次,设为 k 次;在这种情况下,该成员将在委员会中拥有 k 票以批准下一个区块。


为什么需要第二个阶段?


在任何社会中(区块链也不例外)总有一小部分坏人,假设比例是 1%,也许 2%。如果一个人不幸生活在一个非常危险的社会中,那么其中可能有 10%的坏人,也许甚至是 20%! 但在任何社会中坏人都不会占多数,否则就无法维持社会体系了。只要大多数成员遵守既定的规则,就会存在一个社会。


假设 Algorand 中 10%的代币属于不诚实的人。然后在第一阶段中申请生成区块的用户有十分之一的可能是坏人。作为坏人,他可以告诉一些用户该块是 X 而对其他用户说该块是 Y 等等,从而产生关于区块链内容的不同意见。


第二阶段就解决了这个问题。实际上如果你选择随机的 1000 个代币,当最多 10%的代币是不诚实的用户所有时,那么选出来的这些用户大都是坏人,委员会被坏人控制去投票的概率就会非常之低,以至于可以忽略不计了。


假设这一次,你的区块生成申请没有被系统选中,你也没有被委员会选中。但是你看到了 B 区块已经获得委员会 700 票的批准。这样你就知道 B 肯定是下一个块了。

一个关键问题

在这种高层级的分析中自然产生了几个问题。让我们从最明显的一个问题开始探讨:首先是谁来随机选择委员会成员?


假设我告诉你是我来选择,那么你可能会说“这是有史以来最中心化的系统,而你就是它的中心!”假设我告诉你所有用户都参与讨论,直到他们就成千上万的委员会成员达成一致意见,然后选出来的委员会才开始工作,那么你可能会告诉我,人性就是这样,这种机制下一辈子都选不出我们需要的一千名委员会成员。


而 Algorand 采取了非正统的方式:委员会成员自己选择自己。你可能会想“什么? 这是一个糟糕的主意! 因为如果我是一个坏人,我会选择自己成为这个委员会的成员,接下来…“但不是那么简单的。


想要成为委员会成员,你需要花一枚硬币赢得一张个人生成的、加密且公平的彩票,你可以在你自己的私人计算机中独立运行猜谜过程——也就是说不和别人联网计算。而且由于彩票是加密且公平的,你不能改变自己被选中的机会。(即使是拥有庞大计算资源的国家机器也无法增加被选中的概率。)


为了在比如说 10,000,000,000 个代币中选择 1,000 个随机代币,每个代币被选中的概率就是 1,000/10,000,000,000,也就是千万分之一。


所以一旦用户看到了新的区块申请,她就会问自己:我可以成为委员会的成员吗? 我将获得多少票?


为了回答这些问题,她在自己的笔记本电脑上为她拥有的每一个代币运行加密抽奖。(如果用户有 n 个代币,还会有额外的技术确保她只能一次抽一张彩票而不是同时抽 n 张票!)


一旦用户开始抽奖,就会出现两种情况。要么她的所有代币都没有赢得彩票,这种情况下无论她对该区块表达何种意见都将被忽略。或者其中一些 k> 1 的代币赢得了彩票,这种情况下她获得了一张奖票,即一个简短的证明,其中所有人都可以很容易地证明她在委员会中有 k 票。在后一种情况下,她通过网络宣传(i)证明她有 k 票,并(ii)表达她对该区块的意见。

解决三难问题

我要说的是,这套机制终于解决了三难问题!——同时兼顾可扩展性、安全性和去中心化属性。

可扩展性

用户每次抽奖需要多久? 无论她有多少代币,答案都是大约一微秒,这是极快的速度。(此外所有抽奖都是相互独立运行的,因此用户不必等待其他用户完成抽奖。)


一旦被选中成为委员会成员,每位成员就向网络传播单条内容简短、瞬时解码的消息。因此,无论系统中有多少用户,需要传播的最大消息数为 1000 条短消息。这种机制可扩展吗?当然!

安全性

现在讲安全性。假设我是一个非常强大的攻击者,能够随时随地贿赂用户。显然,我会想要贿赂委员会的成员,但我有一个问题:我不知道他们是谁。


之所以如此,是因为委员会成员是通过私密运行,加密且公平的个人抽奖来选出的。因此只有他们知道自己是谁,直到他们通过网络传播他们的获奖门票和他们对该区块的意见的那一刻,我才能了解委员会成员都是谁;因为我有超能力,我可以立即贿赂整个委员会——但那又如何? 在这个时候贿赂他们为时已晚。无论委员会成员是什么态度,他们已经发表过意见了,他们的获奖票和关于该区块的意见已经在整个网络中传播开来。我没有权力将他们的信息放回瓶中,就像政府无权将维基解密病毒传播的信息放回瓶中一样。


换句话说,Algorand 的机制是安全的,因为攻击者事先不知道贿赂谁,而当他能够开始贿赂的时候为时已晚。


相反,如果体系中有一个成员固定的 1000 人委员会。如前所述,即使委员会只执政一分钟,它也很容易受到 DoS 攻击。如果委员会执政的时间更长,比如一周,那么成员甚至可能通过贿赂等传统方式在现实世界中被收买。然而在 Algorand 的情况下,人们不会知道该对谁进行 DoS 攻击,一旦委员会发言后,DoS 攻击就没用了。

去中心化

最后是去中心化。是否有少数用户负责选择下一个区块? 不,没有,也没有一个固定的 1000 人委员会负责批准申请。这一次,委员会被随机(并秘密)选中;下一次,将随机(和秘密)选出另一个委员会。每个人都有机会参与新区块的生成。

Algorand 的非分叉链

Algorand 技术的另一个优势是其链条永远不会分叉。这是因为只有一个区块可以具备所需的委员会投票门槛。因此在 Algorand 中所有的交易都是最终结果。一旦出现了一个新块,你就可以确保它永远是链条的一部分。如果新区块包含向你支付的款项信息,你就可以放心断定自己已经收到付款并立即发送货物。


金融世界已经有很多风险了,没必要再加上一条“区块消失”的额外不确定性。顺便说一下,当我说 Algorand 的链条绝不会分叉的时候有点撒谎了。实际上 Algorand 也可能分叉,但它们非常罕见。在 Algorand 中分叉的概率理论上是 10^-18。这个数字好像挺奇怪,但它实际上有一个自然的解释。物理学家告诉我们,10^18 恰好是从宇宙大爆炸到现在的秒数。换句话说,如果你每秒产生一个新块,这个速度挺快了,你也可能会见到软分叉,但你大概需要等到宇宙毁灭才能看到这个分叉了。

作者介绍


Silvio Micali 是 Algorand 的创始人,也是零知识证明的发明者之一。他是麻省理工学院的教授,曾赢得图灵奖。



这是一个可扩展、安全并真正去中心化的数字货币及交易平台。


查看英文原文:https://medium.com/algorand/algorands-core-technology-in-a-nutshell-e2b824e03c77


2019-05-07 11:106315

评论 1 条评论

发布
用户头像
厉害
2019-05-07 15:52
回复
没有更多了
发现更多内容

为什么有着足够出色的技术,中年程序员依然面临中年危机?

android 程序员 移动开发

互联网公司菜鸟成功逆袭进入阿里钉钉,从月薪 23K直接涨到了年薪65W(Android 岗面经)

android 程序员 移动开发

两年Android开发三面上岸腾讯,这些核心知识点建议收藏

android 程序员 移动开发

代码怎样review?

android 程序员 移动开发

五年前的转正我没有留下,校招进不了大公司就是失败吗?

android 程序员 移动开发

从Android开发者的角度看一看IOS和Flutter中的列表实现

android 程序员 移动开发

你必须要掌握的Android冷启动优化

android 程序员 移动开发

为啥mybatis的mapper只有接口没有实现类,但它却能工作?(全网独一份!

android 程序员 移动开发

从零开始学数据结构和算法(四)哈希表的思想和二叉树入门

android 程序员 移动开发

从零开始实现一个插件化框架(一)

android 程序员 移动开发

Redis 高可用篇:Cluster 集群原理剖析,集群可以无限拓展么

码哥字节

redis cluster NoSQL 数据库 11月日更

二本吊打985?看到原因,网友们服气了!

android 程序员 移动开发

你是不是疯了,为什么字节跳动的Offer都不要了?

android 程序员 移动开发

管理云服务器密码

坚果

云服务器 服务器密码 11月日更

traefik开放80端口时出现权限拒绝

ilinux

从0开始写一个基于Flutter的开源中国客户端(4)—

android 程序员 移动开发

仿新浪微博客户端--界面设计(1)

android 程序员 移动开发

作为Android开发者,你真的知道Android按下开机键到启动发生什么吗?

android 程序员 移动开发

为什么要配置环境变量

android 程序员 移动开发

二本渣渣,3年开发,从web前端转到Android移动端后拿到头条offer的心路历程(面试需要积累

android 程序员 移动开发

互联网公司不招35岁以上程序员的真相

android 程序员 移动开发

什么,还有这么简单的OkHttp源码分析?

android 程序员 移动开发

今日头条技术架构分析

android 程序员 移动开发

今日头条屏幕适配方案终极版正式发布!

android 程序员 移动开发

以 29K 成功入职字节跳动,这份《 Android 面试笔记 》让我受益匪浅

android 程序员 移动开发

优雅保活方案,原来Android还可以这样保活!

android 程序员 移动开发

iOS开发:上架App被拒原因5.1.1Legal Privacy - Data Collection and Storage

三掌柜

11月日更

为什么要学习HarmonyOS以及如何快速上手?(1)

android 程序员 移动开发

为什么要学习HarmonyOS以及如何快速上手?

android 程序员 移动开发

五年开发经验杭州竟找不到工作:Android开发真等于废人?

android 程序员 移动开发

京东把 Elasticsearch 用的真牛逼!

android 程序员 移动开发

重塑金融体系,图灵奖得主的区块链平台开放公测_区块链_Silvio Micali_InfoQ精选文章