匿名币新秀当道,门罗币、达世币、大零币何去何从?

Python014

匿名币新秀当道,门罗币、达世币、大零币何去何从?,第1张

这段时间,有一个不算新的新词汇占据了不少币圈人的视线,没错,那就是 匿名币

匿名币持续走热在风云变化的加密市场内有其必然性,无论是基于暗网交易还是出于保护隐私的目的,BTC受到大肆追捧都与它一定程度的匿名功能有关。

然而,随着加密货币在流通领域愈加崭露头角,各国对这一市场的监管也越加严密,首当其冲便是BTC。而BTC自身的匿名功能并不完善,为了弥补其缺陷,人们逐渐将视线转移到技术更为完备的匿名币身上。

然而匿名币“老币当道”的同时,“新币林立”,众多投资者们究竟该如何抉择呢?

一、门罗币(XMR)

门罗币2014年便已在币圈展露头角,提供堪称最高级别的匿名功能,是当之无愧的老牌匿名币。

时至今日,门罗币在暗网交易中接受度极高,公认将成为接替BTC的下一任新宠。而门罗币在匿名币中能获得如此高的地位主要得益于它的环签名技术。

什么是环签名技术呢?

就是所有参与的人将签名形成一个环形,这样就能避免从签名的先后顺序上判断出谁是第一个签名的人;而门罗币在运用这一概念时,完全不需要征得他人的同意便可借他们的公钥将交易信息形成环签名,由此达成完全匿名的作用。

二、达世币(DASH)

达世币可以说是匿名币中大众知名度最高,同时也是商家接受度较高的一种匿名币。它采用的混币技术并不难理解。

混币,显而易见,是一种混淆视线的做法;在运用时就是让一个交易里面包含大量的输出和输入,割裂它们之间的对应关系,参与的人越多,轮次就越多,关系便越复杂,保密性也就越高。

这个技术缺陷也就在此,越多人参与虽然提高了安全度,但速度却得不到保证,而前期参与人数过少也会使得交易记录有被追踪到的可能。

三、大零币(Zcash)

大零币可以说是所有匿名币中公认匿名技术最为高端和完备的,它一面世便受到了币圈的极大追捧,名义市值甚至超过了BTC。这样极高的声誉完全得益于它的核心技术——零知识证明。

举例说明:A需向B证明持有某房间的钥匙,B确定房间内存在某样事物,A打开房门拿出这样东西给B,就向B证明他有房间的钥匙了。

在这一过程中,B从没有见过A的钥匙A也没有提供其它有效消息,但最终证明了自己的所有权。运用这一技术的大零币也能更好地保证交易的匿名性。

为了保证监管的需要,大零币给使用者提供了完全匿名的交易和非匿名交易,然而实际运用过程中,由于速度过慢等问题,它的匿名功能并没有被广泛使用。

以上便是匿名币圈三大老牌巨头,它们各有利弊,在他们各自比拼不断角逐的过程中,最近又涌起了一批新的匿名币,正以非凡的劲头掠夺人们的注意力。

一、影子币(SDW)

影子币是19年中旬刚刚上市的新秀,在保证极高的匿名性的前提下,影子币还更注重交易过程中的实际作用。

影子币在研发过程中注入了Darksend技术来保障其超高的匿名性,同时,它还创新性地融入了InstantX技术来确保交易的及时有效和安全可靠;此外,它还是全网第一批实现双层奖励制的加密货币,这大大激励了矿工的积极性。

二、德罗币(Dero)

德罗币算是由门罗币发展而来,所以他使用的核心技术也正是环签名技术,但它使用了Go语言重新编写了环签名的代码,在门罗币的基础上加入了新的创新。

其中包含匿名智能合约和防弹协议(Bulletproofs),这两项技术能保证整个转账的匿名性和安全性,并大大降低交易费用。

三 Grin&Beam

Grin与Beam都是基于MimbleWimble协议发展而来的匿名币。

MimbleWimble协议的由来与比特币息息相关,它诞生的初衷实际上是为了帮助比特币节省存储空间,并提高交易的匿名性和安全性。其达成匿名的原理是使得交易中不存在交易地址,交易的中间状态还可以被合并,在保证安全可靠的同时可谓从源头上保证交易的匿名。

然而在开发过程中发现它与比特币脚本存在较大的冲突,于是最终并没有运用于比特币,反而在两位匿名大神的努力下先后开创出两个独立的加密货币项目——Grin和Beam。

上述便是近两年内匿名币圈涌现的新秀,虽然上线时间较短,但迅速占领匿名加密货币市场,例如影子币短期内更是实现了进300%左右的迅猛涨势,竞争的激烈性可见一斑。

无论是老牌币种还是匿名新秀,它们都各自具备不可替代的优势,其中门罗币(XRM)、达世币(DASH)、影子币(SDW)用于实际支付的场合都在增加,实用性较强;大零币(Zcash)、德罗币(Dero)、Grin&Beam实用性还有待考证,但其在技术上都有了新的尝试和突破。

智能合约调用是实现一个 DApp 的关键,一个完整的 DApp 包括前端、后端、智能合约及区块 链系统,智能合约的调用是连接区块链与前后端的关键。

我们先来了解一下智能合约调用的基础原理。智能合约运行在以太坊节点的 EVM 中。因此要 想调用合约必须要访问某个节点。

以后端程序为例,后端服务若想连接节点有两种可能,一种是双 方在同一主机,此时后端连接节点可以采用 本地 IPC(Inter-Process Communication,进 程间通信)机制,也可以采用 RPC(Remote Procedure Call,远程过程调用)机制另 一种情况是双方不在同一台主机,此时只能采用 RPC 机制进行通信。

提到 RPC, 读者应该对 Geth 启动参数有点印象,Geth 启动时可以选择开启 RPC 服务,对应的 默认服务端口是 8545。。

接着,我们来了解一下智能合约运行的过程。

智能合约的运行过程是后端服务连接某节点,将 智能合约的调用(交易)发送给节点,节点在验证了交易的合法性后进行全网广播,被矿工打包到 区块中代表此交易得到确认,至此交易才算完成。

就像数据库一样,每个区块链平台都会提供主流 开发语言的 SDK(Software Development Kit,软件开发工具包),由于 Geth 本身就是用 Go 语言 编写的,因此若想使用 Go 语言连接节点、发交易,直接在工程内导入 go-ethereum(Geth 源码) 包就可以了,剩下的问题就是流程和 API 的事情了。

总结一下,智能合约被调用的两个关键点是节点和 SDK。

由于 IPC 要求后端与节点必须在同一主机,所以很多时候开发者都会采用 RPC 模式。除了 RPC,以太坊也为开发者提供了 json- rpc 接口,本文就不展开讨论了。

接下来介绍如何使用 Go 语言,借助 go-ethereum 源码库来实现智能合约的调用。这是有固定 步骤的,我们先来说一下总体步骤,以下面的合约为例。

步骤 01:编译合约,获取合约 ABI(Application Binary Interface,应用二进制接口)。 单击【ABI】按钮拷贝合约 ABI 信息,将其粘贴到文件 calldemo.abi 中(可使用 Go 语言IDE 创建该文件,文件名可自定义,后缀最好使用 abi)。

最好能将 calldemo.abi 单独保存在一个目录下,输入“ls”命令只能看到 calldemo.abi 文件,参 考效果如下:

步骤 02:获得合约地址。注意要将合约部署到 Geth 节点。因此 Environment 选择为 Web3 Provider。

在【Environment】选项框中选择“Web3 Provider”,然后单击【Deploy】按钮。

部署后,获得合约地址为:0xa09209c28AEf59a4653b905792a9a910E78E7407。

步骤 03:利用 abigen 工具(Geth 工具包内的可执行程序)编译智能合约为 Go 代码。abigen 工具的作用是将 abi 文件转换为 Go 代码,命令如下:

其中各参数的含义如下。 (1)abi:是指定传入的 abi 文件。 (2)type:是指定输出文件中的基本结构类型。 (3)pkg:指定输出文件 package 名称。 (4)out:指定输出文件名。 执行后,将在代码目录下看到 funcdemo.go 文件,读者可以打开该文件欣赏一下,注意不要修改它。

步骤 04:创建 main.go,填入如下代码。 注意代码中 HexToAddress 函数内要传入该合约部署后的地址,此地址在步骤 01 中获得。

步骤 04:设置 go mod,以便工程自动识别。

前面有所提及,若要使用 Go 语言调用智能合约,需要下载 go-ethereum 工程,可以使用下面 的指令:

该指令会自动将 go-ethereum 下载到“$GOPATH/src/github.com/ethereum/go-ethereum”,这样还算 不错。不过,Go 语言自 1.11 版本后,增加了 module 管理工程的模式。只要设置好了 go mod,下载 依赖工程的事情就不必关心了。

接下来设置 module 生效和 GOPROXY,命令如下:

在项目工程内,执行初始化,calldemo 可以自定义名称。

步骤 05:运行代码。执行代码,将看到下面的效果,以及最终输出的 2020。

上述输出信息中,可以看到 Go 语言会自动下载依赖文件,这就是 go mod 的神奇之处。看到 2020,相信读者也知道运行结果是正确的了。

创建 PayPal 的目的是使金融服务民主化,并使个人和企业能够加入并在全球经济中蓬勃发展。这项工作的核心是 PayPal 的支付平台,该平台使用专有技术和第三方技术的组合来高效、安全地促进全球数百万商家和消费者之间的交易。随着支付平台变得越来越大、越来越复杂,PayPal 寻求对其系统进行现代化改造并缩短新应用程序的上市时间。

Go 在生成干净、高效的代码方面的有着极高的价值。这些代码可以随着软件部署的扩展而轻松扩展,这使得该语言非常适合支持 PayPal 的目标。

支付处理平台的核心是 PayPal 用 C++ 开发的专有 NoSQL 数据库。然而,代码的复杂性大大降低了开发人员发展平台的能力。Go 的简单代码布局、goroutine(轻量级执行线程)和通道(用作连接并发 goroutine 的管道)使 Go 成为 NoSQL 开发团队简化和现代化平台的自然选择。

作为概念验证,一个开发团队花了六个月的时间学习 Go 并在 Go 中从头开始重新实现 NoSQL 系统,在此期间,他们还提供了有关如何在 PayPal 更广泛地实施 Go 的见解。截至今天,已迁移 30% 的集群以使用新的 NoSQL 数据库。

随着 PayPal 的平台变得越来越复杂,Go 提供了一种轻松简化大规模创建和运行软件的复杂性的方法。该语言为 PayPal 提供了出色的库和快速工具,以及并发、垃圾收集和类型安全。

借助 Go,PayPal 使其开发人员能够将更多时间从 C++ 和 Java 开发的噪音中解放出来,从而能够花更多时间查看代码和进行战略性思考。

在这个新改写的 NoSQL 系统取得成功后,PayPal 内更多的平台和内容团队开始采用 Go。Natarajan 目前的团队负责 PayPal 的构建、测试和发布管道——所有这些都是在 Go 中构建的。该公司拥有一个大型构建和测试农场,它使用 Go 基础设施进行完全管理,以支持整个公司的开发人员的构建即服务(和测试即服务)。

凭借 PayPal 所需的分布式计算能力,Go 是刷新系统的正确语言。PayPal 需要并发和并行的编程,为高性能和高度可移植性而编译,并为开发人员带来模块化、可组合的开源架构的好处——Go 已经提供了所有这些以及更多帮助 PayPal 对其系统进行现代化改造。

安全性和可支持性是 PayPal 的关键问题,该公司的运营管道越来越多地由 Go 主导,因为该语言的简洁性和模块化帮助他们实现了这些目标。PayPal 对 Go 的部署为开发人员提供了一个创意平台,使他们能够为 PayPal 的全球市场大规模生产简单、高效和可靠的软件。

随着 PayPal 继续使用 Go 对其软件定义网络 (SDN) 基础设施进行现代化改造,除了更易于维护的代码外,他们还看到了性能优势。例如,Go 现在为路由器、负载平衡和越来越多的生产系统提供动力。

作为一家全球性企业,PayPal 需要其开发团队有效管理两种规模:生产规模,尤其是与许多其他服务器(如云服务)交互的并发系统;和开发规模,尤其是由许多程序员协同开发的大型代码库(如开源开发)

PayPal 利用 Go 来解决这些规模问题。该公司的开发人员受益于 Go 将解释型动态类型语言的编程易用性与静态类型编译语言的效率和安全性相结合的能力。随着 PayPal 对其系统进行现代化改造,对网络和多核计算的支持至关重要。Go 不仅提供了这种支持,而且提供的速度很快——在单台计算机上编译一个大型可执行文件最多需要几秒钟。

PayPal 目前有 100 多名 Go 开发人员,未来选择采用 Go 的开发人员将更容易获得该语言的批准,这要归功于公司已经在生产中的许多成功实现。

最重要的是,PayPal 开发人员使用 Go 提高了他们的生产力。Go 的并发机制使得编写充分利用 PayPal 的多核和联网机器的程序变得很容易。使用 Go 的开发人员还受益于它可以快速编译为机器代码的事实,并且他们的应用程序获得了垃圾收集的便利和运行时反射的强大功能。

今天 PayPal 的第一类语言是 Java 和 Node,Go 主要用作基础设施语言。虽然 Go 可能永远不会在某些应用程序中取代 Node.js,但 Natarajan 正在推动让 Go 成为 PayPal 的第一类语言。

通过他的努力,PayPal 还在评估迁移到 Google Kubernetes Engine (GKE) 以加快其新产品的上市时间。GKE 是一个用于部署容器化应用程序的托管、生产就绪环境,并带来了 Google 在开发人员生产力、自动化操作和开源灵活性方面的最新创新。

对于 PayPal 而言,部署到 GKE 将使 PayPal 更容易部署、更新和管理其应用程序和服务,从而实现快速开发和迭代。此外,PayPal 会发现更容易运行机器学习、通用 GPU、高性能计算和其他受益于 GKE 支持的专用硬件加速器的工作负载。

对 PayPal 来说最重要的是,Go 开发和 GKE 的结合使公司能够轻松扩展以满足需求,因为 Kubernetes 自动扩展将使 PayPal 能够处理用户对服务不断增长的需求——在最重要的时候保持它们可用,然后在安静的时间来省钱。