区块链:一场始料未及的革命

本文探讨了区块链技术如何作为22世纪的技术提前到来,并有望彻底改变社会运作方式。作者通过对区块链基本原理的阐述,强调了它作为一种去中心化工具的重要性,并将其与20世纪末互联网的发展历程进行了对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

“当主流媒体还在忙于猜测加密货币价格及其黑市阴谋时,他们已经遗漏了这一切的本质事实。那就是,密码学家们悄然发明了一套全新的技术原型。”

Unitimes特约作者Haseeb Qureshi在其文章《区块链:一场始料未及的革命(Blockchain: the revolution we’re not ready for)》中指出,“区块链将颠覆整个社会,它将使得仅存在于乌托邦和哲学家白日梦中的治理体系得以实现”。文中,他不仅饶有趣味地将区块链技术与20世纪震惊物理学界的弦理论进行了类比,还举出1995-2001年互联网泡沫危机以警醒盲目跟风的投机者。“泡沫终将破灭”,他认为,“但是当尘埃清理干净以后,那些兢兢业业、稳步前进的企业如微软、亚马逊、谷歌,将进场开展建设未来的繁杂工作。”


我们任重而道远。


区块链:一场始料未及的革命


想象一下,你无须信任任何陌生人就可与之进行交易;你无须信任银行就可安心地把积蓄储存在那儿;你不需要信任政府,因为你知道它不得不公平、公正。


那会发生什么?


那会改变这个世界。


而这,正是区块链的愿景。


最近,基于区块链发行的加密数字货币因其高昂的价格、剧烈的波动以及诸如门头沟(Mt. Gox )和丝绸之路(The Silk Road.)等耸人听闻的消息遍布媒体。


然而,数字货币只不过是冰山一角。


当主流媒体还在忙于猜测加密货币价格及其黑市阴谋时,他们已经遗漏了这一切的本质事实。那就是,密码学家们悄然发明了一套全新的技术原型。


区块链(以及支持它们的共识协议)的诞生,源于开发人员试图解决一个大胆的难题:如何创造不可追溯的数字货币。通过将密码学、博弈论、经济学以及计算机科学相结合,他们成功创造出了一套全新的工具用于建立去中心化的系统。


但他们的创造远不止改变货币兑换的方式,而是改变更多。他们的创造将改变整个世界,而这却似乎没有人注意到。


著名物理学家爱德华·维登(Edward Witten)曾经这样评价弦理论:它是21世纪物理学的一部分,却碰巧进入了20世纪。换句话说,当时的物理学界还没有准备好接受弦理论。


区块链是22世纪的技术,却碰巧进入了21世纪初。


我们不得不痛心疾首:显然,我们还没有准备好。


1
什么是区块链?


从核心意义来讲,区块链是一个极其简单、优雅的数据结构。它基本上就是一个链表,只不过这些链表里面增加了一个很重要的内容——即每一个区块都包含有前一个区块的加密哈希值。这种方式创造出一条有效的、不可篡改的由区块及其对应指纹信息所构成的链,并一直延伸指向创世区块。


如果系统中的每一个人都复制这个链表(并通过重复加密哈希函数来验证其合法性),那么这个系统将实现为一个缓慢且略为粗糙的分布式数据库,并且该数据库能防止篡改。


这就是区块链。并不那么玄乎,对吗?


当然,为了实际构建一个功能协议,你还需要进行更多的工作——你需要认证体系(公/私钥加密)、共识机制(通过工作量证明或者各种类型的权益证明机制所实现的中本聪共识)、空间和时间优化(Merkle树和Merkle证明)以及一大堆点对点网络所需要的东西。


重点在于:区块链是真正用于组织复杂系统的新工具。我们才刚刚开始理解如何将它们整合进现实世界当中。


2
区块链的愿景


如果系统中的每一个人都复制这个链表(并通过重复加密哈希函数来验证其合法性),那么这个系统将实现为一个缓慢且略为粗糙的分布式数据库,并且该数据库能防止篡改。


这就是区块链。并不那么玄乎,对吗?


当然,为了实际构建一个功能协议,你还需要进行更多的工作——你需要认证体系(公/私钥加密)、共识机制(通过工作量证明或者各种类型的权益证明机制所实现的中本聪共识)、空间和时间优化(Merkle树和Merkle证明)以及一大堆点对点网络所需要的东西。


重点在于:区块链是真正用于组织复杂系统的新工具。我们才刚刚开始理解如何将它们整合进现实世界当中。


3
未来的未来


目前,我在硅谷所认识的大多数人都把注意力集中在了深度学习和人工智能上,他们认为两者是最有前景的技术革命。我也被他们的热情深深感染了!深度学习将颠覆行业,并赋予我们从前只敢在超级科幻小说中想象的能力。


但区块链将颠覆整个社会,它将使得仅存在于乌托邦和哲学家白日梦中的治理体系得以实现。


然而,当你现在看到加密货币世界时,你不一定会认识到这一点。


绝大多数当下发生的事情可归纳为两类。


第一类是正在构建底层协议的加密无政府主义者和黑客。他们正在争分夺秒地为将来的建设者构建去中心化的TCP / IP协议栈。


第二类是投机者,他们试图趁市场尚未察觉和情绪乐观时赚取快钱。


不幸的是,后者吸引了绝大多数人的关注。


4
区块链塔




想象一下,时间回到1995年,某个人在万维网上蹒跚而行,浏览着那些专为怪胎服务的精致的网站,突然想到:“哇,这个奇怪的小玩意儿有一天会变得举足轻重。”


这就是几年前区块链。换句话说,区块链安全地越过了Angelfire2的鸿沟。


现在其第一个有用的闪光点已经得证,下一步乃大势所趋。


你可能已经听说过ICO狂热,或者近期比特币和以太坊的币值回升。聪明人和狡猾的人都已经注意并认识到区块链的巨大潜力,并且他们已经为投机加密货币的潜在未来收获或失去了财富。




不幸的是,现在区块链正作为投机品主宰着大多数人的注意力。信号(指区块链的潜力)正在被大量噪声(指投机)所淹没。


但这在意料之中,我们已经见怪不怪。


当人们第一次意识到互联网的巨大潜力时,大量资金被盲目投入网络。人们预期互联网将被大规模应用并且会创造出巨大的价值,这场投机招致了更大的投机,直至2001年狂潮崩塌。


类比当下发生的事情,泡沫终将破灭。


但是当尘埃清理干净以后——就像网络泡沫破灭以后一样——那些兢兢业业、稳步前进的企业如微软、亚马逊、谷歌,将进场开展建设未来的繁杂工作。


我们任重而道远。


我最近刚从Airbnb离职。一年多以来我一直从事支付欺诈方面的工作。这是一项很棒的并且令我获益匪浅的工作。Airbnb是一家很棒的公司,尽管我离职了,但我们依旧保持着良好的关系。随着我对密码学和区块链了解得越多,我就越相信这个东西会改变世界。


这就是我要从事区块链方向工作 (并且可能要继续更新博客)的原因。


如果你是一名开发人员,而且想知道该如何参与并帮助构建这个未来,请查看这个链接,一起来趟这趟浑水。


译者注:

[1] 约翰·洛克,英国哲学家,在社会契约理论上做出重要贡献,代表作有《人类理解论》和《政府论》。

[2] Angelfire是一项提供免费或收费网址服务的互联网服务。


文章来源:Unitimes        作者:Haseeb Qureshi            翻译:喏呗尔

以下是我们的社区介绍,欢迎各种合作、交流、学习:





<think>嗯,用户问的是为什么在Java中使用Arrays.asList将int数组转换为List时会得到一个只有一个元素的列表,以及正确的转换方法是什么。我需要先回忆一下Java中的基本类型数组和包装类数组的区别。 首先,Arrays.asList方法接收的是一个泛型参数T,而Java中的基本类型(比如int)不能作为泛型参数,所以当传入一个int数组时,T会被识别为整个数组对象,而不是数组中的各个元素。例如,如果传入new int[]{1,2,3},asList会把这个int数组当作一个元素,所以生成的List<int[]>只有一个元素,即数组本身。而如果是Integer数组,每个元素都是对象,所以能正确转换。 那正确的做法应该怎么办呢?用户可能需要将int数组转换为List<Integer>。这时候,可能需要遍历数组,逐个将int转换为Integer。或者使用Java 8的流来处理,比如Arrays.stream(arr).boxed().collect(Collectors.toList())。不过要注意,这样会生成一个可变的List,因为asList返回的列表是固定大小的,不支持添加或删除操作。 另外,用户可能还会遇到其他相关问题,比如为什么修改原数组会影响List,或者如何将生成的List转换为可变的。这时候可以提到,使用ArrayList的构造函数来包装asList的结果,这样得到的列表就是可变的了。例如,new ArrayList<>(Arrays.asList(array)),但同样需要注意数组类型必须是引用类型。 总结一下,错误的原因是因为基本类型数组被当作单个对象处理,而正确的解决方法需要将基本类型数组转换为对应的包装类数组,或者使用流来处理。同时,提醒用户注意asList返回的列表的不可变性,必要时创建新的ArrayList实例。</think>### 为什么使用`Arrays.asList`将`int`数组转换为`List`时会出现只有一个元素的情况? **原因分析** `Arrays.asList(T... a)`方法的泛型参数`T`必须是引用类型,而`int`是基本类型。当直接传递`int[]`数组时,编译器会将整个`int[]`视为一个对象,导致`List`中仅包含一个元素(即整个数组对象本身)[^4]。例如: ```java int[] arr = {1, 2, 3}; List<int[]> list = Arrays.asList(arr); // List.size() = 1 ``` ### 正确实现转换的方法 **1. 使用包装类型数组替代基本类型数组** 将`int[]`转换为`Integer[]`,再通过`Arrays.asList`生成`List<Integer>`: ```java Integer[] arr = {1, 2, 3}; List<Integer> list = Arrays.asList(arr); // List.size() = 3 ``` **2. 使用Java 8 Stream API(适用于基本类型数组)** 通过`IntStream`将`int[]`转换为`List<Integer>`: ```java int[] arr = {1, 2, 3}; List<Integer> list = Arrays.stream(arr) .boxed() .collect(Collectors.toList()); ``` **3. 手动遍历转换** 适用于旧版本Java: ```java int[] arr = {1, 2, 3}; List<Integer> list = new ArrayList<>(); for (int num : arr) { list.add(num); } ``` ### 注意事项 - `Arrays.asList`返回的`List`是固定长度的,不可添加或删除元素[^2]。若需可变列表,可使用`new ArrayList<>(Arrays.asList(array))`。 - 若直接修改原始数组,`List`中的元素会同步变化,因为`List`底层仍引用原数组[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值