Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >享云链关键技术源代码追踪及关键函数试拆解

享云链关键技术源代码追踪及关键函数试拆解

原创
作者头像
互链脉搏
修改于 2019-08-27 09:24:37
修改于 2019-08-27 09:24:37
7720
举报
文章被收录于专栏:区块链深度区块链深度

继享云链7月份发布白皮书之后,享云链“郑和”版本于8月21日开源发布(开源地址:https://github.com/lianxiangcloud/linkchain)。在它的白皮书路线图中描述了该版本支持UTXO和ACCOUNT双账户模型、隐私的UTXO交易、支持EVM和WASM双虚拟机等几大亮点。本着学习的态度来了解一下具体实现原理,然而开源项目中几乎没有这几点的设计说明文档,所以只能跟踪源代码并记录一些关键函数:

代码结构

“郑和”是享云链第二个开源版本,第一个版本在6月份开源(开源地址:https://github.com/lianxiangcloud/lk-chain)。该版本相对于第一次开源代码来说进行了一次模块化设计和开发,丢弃了双进程设计并进行了业务模块的整合,但大部分模块内部代码没变。对照模块图在项目中找到相应代码还算容易,如accounts(账户)、consensus(共识算法)、vm(虚拟机)、p2p等。

utxo目录乍一看还以为UTXO类型定义、业务逻辑等相关的模块,但其中就一个UTXO交易的存储实现,类型定义和业务逻辑在其他目录,这个单独列出来没明白用意,不知道为什么不和其他数据整合成一个存储模块。

虽然项目进行了模块化设计,但模块化的耦合性比较高,核心模块的二次开发或者替换比较困难,被第三方项目直接引用也不太容易。

双账户模型

双账户模型(ACCOUNT+UTXO)是当前所有区块链公链项目首次支持的功能,听起来比较特别,好不好用就看以后用户端的设计。从代码中看到UTXO模型只用于隐私交易,非隐私交易就需要用ACCOUNT模型,这样设计的目的应该是为了兼容当前享云链上的所有账户数据,同时支持隐私交易,毕竟ACCOUNT账户模型对用户管理资产来说比较友好同时享云链的用户数比较多。

针对当前的ACCOUNT账户,收发隐私交易不需要另外创建和保存UTXO相关的公私钥。享云链根据ACCOUNT账户的私钥自动生成了UTXO隐私交易需要使用的公私钥,即只要有一个ACCOUNT账户私钥就拥有了UTXO交易的公私钥,用户只保存一个私钥文件,这一点说明设计人员还是考虑了用户体验。

数据类型

除了主要的资产转移的交易,享云链还支持多种其他格式的数据类型,包括合约创建、合约更新、多重签名账户、跨链交易等。每种类型都实现了统一的接口,预留了扩展数据类型的可能性。

合约创建和合约升级定义了单独了数据类型,这一点和以太坊创建合约方式不同,单独的合约升级数据类型也说明支持业务合约代码在线升级。数据格式中的签名字段可以存储多个,说明支持多个签名;同时定义了跨链交易类型,但没有太多实现细节。

隐私交易

支持隐私交易是享云链亮点之一,通过UTXO交易格式来实现资产转移双方的账户和金额隐藏,避免账户的交易细节被追踪。隐藏账户和金额的实现细节是通过cgo的方式调用Monero(门罗币)相关加解密算法函数,在享云链xcrypto目录下封装了相关的调用函数。该项目中没有隐私交易实现原理的介绍,可以去看门罗币的文章,讲的很清楚,否则理解不了UTXO交易中的字段含义。

UTXO交易的INPUT(输入)和OUTPUT(输出)都被扩展了,输入和输出都可以是UTXO和ACCOUNT类型。ACCOUNT类型部分字段也与金额隐藏有关,这个地方有些复杂很不好理解。

隐私交易发生的资产转移手续费,从wallet(钱包)相关代码中看出是动态更新的,再进一步跟踪发现是通过合约来更新。虽然手续费的变更透明且有据可查,但谁来更新手续费当前没有相关说明。

双虚拟机

享云链支持EVM和WASM双虚拟机,EVM使用了以太坊的开源版本,WASM使用了迅雷链的开源项目tc_wasm。具体实现方式是在执行合约之前先通过合约代码获取对应的虚拟机实例,然后再执行合约调用。这里可以说明一下,WASM编译器编译出来的合约代码是有标识符的,所以通过合约代码可以判断出来是用EVM执行还是用WASM执行。

虽然是支持了双虚拟机,但都用的开源项目,这一技术创新点不是很足,其他项目如果想实现双虚拟机,估计也就几天时间就支持了。双虚拟机没啥要研究的,想学习技术还是去了解开源项目EVM和WASM是如何设计和执行合约代码。

总结

“郑和”版本是享云链白皮书发布之后的第一个升级版本,从当前的两次开源代码来说,享云链技术团队的效率非常高。项目中隐私交易是核心,交易类型设计的比较复杂,有一定的学习门槛,最好提前看点门罗币文档再深入细节。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于Ordinals在比特币L1网络实现EVM图灵完备智能合约支持——BxE协议
区块链技术自诞生以来,为金融、供应链、数字身份等领域带来了变革性的创新。然而,作为第一个成功应用区块链技术的比特币,存在着一些局限性,如较低的交易吞吐量、较高的能源消耗以及有限的脚本功能。这使得比特币在支持复杂应用和智能合约方面显得力不从心。
深蓝studyzy
2024/04/17
2160
基于Ordinals在比特币L1网络实现EVM图灵完备智能合约支持——BxE协议
BTA | 杨德升:掌握这些技术点,现在就能做一个Dapp!
区块链大本营出品 整理 | Aholiab 3月30日~3月31日,由CSDN、火星财经主办,中关村区块链产业联盟、柏链道捷、区块链大本营、TokenSky联合主办的区块链技术及应用峰会(BTA)·中国,在北京喜来登长城饭店盛大举行。 作为时下最热门的行业话题,区块链以其颠覆性的技术理念,正在对各个行业施以影响,吸引了全球技术圈、投资者、创业者的关注。为了深入理解区块链及其背后的技术本质,本次大会邀请了80+区块链技术领导人物、100+区块链投资商业大咖,就区块链的发展趋势进行探讨,让人们有机会全面了解这一
区块链大本营
2018/05/10
1.5K0
本体技术视点 | 智能合约安全与漏洞分析(二)
智能合约安全问题一直是区块链技术体系中探讨得比较多的话题之一。无论是以以太坊 EVM 虚拟机为代表的智能合约体系,还是以 EOS WASM 虚拟机为代表的智能合约体系,都或多或少地暴露过不同类型的智能合约漏洞。这些漏洞不仅使得项目方和用户损失惨重,而且也让用户对区块链的安全性产生了质疑。
本体Ontology
2019/12/05
4950
本体技术视点 | 智能合约安全与漏洞分析(二)
主网三周年特辑 | 全面兼容以太坊生态的Ontology EVM亮相
早在今年伊始,本体技术团队开始了本体版本 EVM 的研发。在已有的三种多虚拟机(NeoVM、Native 和 Wasm)的基础上,增加最具有广泛适用性的 EVM(以太坊虚拟机)。目标是尽可能保持本体和以太坊平台的无缝衔接,带来对开发者与用户高度友好的体验。
本体Ontology
2021/07/12
5790
主网三周年特辑 | 全面兼容以太坊生态的Ontology EVM亮相
区块链学堂——区块链词汇手册
【区块链】:Blockchain,分布式存储、加密算法、共识机制、P2P传输等计算机技术结合的新型应用模式。 【区块】:Block,用于记录区块链系统中数据的存储。 【链】:chain,区块头中通过引用哈希值链接。 【区块链服务】:BAAS,blockchain as a service,区块链即服务。 【分布式】:Decentralized,不依赖中心服务器,分布的计算机资源进行计算处理的模式。 【共识机制】:consensus,区块链中事务达成的分布式共识算法。 【P2P传输】:peer-to-pe
企鹅号小编
2018/01/24
17.5K0
区块链学堂——区块链词汇手册
Ethereum 核心技术解读
比特币作为一种去中心化的数字货币,是极其成功的,但受限于比特币脚本(非图灵完备,只能处理一些简单的逻辑),并不能处理很复杂的业务。而Ethereum引入了智能合约,使去中心化的概念能够应用于更丰富的应用场景,因此也被称为区块链 2.0。本文将对以太坊核心技术进行解读,如有错漏,欢迎交流指正。
pseudoyu
2023/04/11
7350
Ethereum 核心技术解读
比原链设计思考: 扩展性UTXO模型
用户模型是比原链在最初就需要确定的重要数据结构, 团队的选择还是聚焦在两种典型的模型系统中,Account模型和UTXO模型,和其他大多数区块链设计一样, 选择了模型就决定了协议层的重要实现,两种模型各有利弊,不同区块链针对想聚焦的场景自身会有判断。
比原链Bytom
2018/08/27
4310
比原链设计思考: 扩展性UTXO模型
USDT PHP开发包OmniTool简介
OmniTool开发包适用于为PHP应用快速增加对Omni Layer/USDT数字资产的支持能力,即支持使用自有Omni Layer节点的应用场景,也支持基于第三方API服务和离线裸交易的轻量级部署场景。下载地址:omni/usdt php开发包 。
用户1408045
2019/06/11
2.3K0
USDT PHP开发包OmniTool简介
码农看享云链多资产token技术的原理与应用
企业为什么需要多资产token? 区块链上token是安全、可流通的数字权益证明,它可以代表任何的权益,比如使用权、股权等等。现实生活中的各种权益证明,不管是所有权还是著作权、债券还是代金券、货币还是票据的都可以数字化、通证化,并接入区块链平台进行快速而又安全的交易。 企业和个人在区块链上发行token资产已是当下区块链时代的时髦行为,因其可极大地降低交易成本。而一个运营能力专业,技术氛围良好,用户数量大,用途广泛,高效、安全与易用的商用区块链平台,才能保证资产切实有效的发行。 享云链率先原生支持单账户多币种,并支持通过合约发行隐私Token 目前像以太坊这样的公链,新增资产的发行、交易、转账都只能在合约中进行。对开发人员和资深用户来说,原生token与合约发行的token交易操作截然不同。虽然以太坊提出ERC-20等标准协议来支持用户发行资产,但用户仍需通过调用合约方式来进行转账操作,这种方式影响了转账效率(需要执行合约交易,拉起虚拟机),也引入了风险(非标准合约发行)。
互链脉搏
2020/01/10
6490
EOS是什么_电脑EOS是什么
EOS是什么 EOS是Enterprise Operation System的缩写,它是商用分布式应用设计的一款区块链操作系统。EOS是引入的一种新的区块链架构EOSIO,用于实现分布式应用的性能扩展。EOS并不像比特币和以太坊那样是货币,而是基于EOSIO软件项目之上发布的代币,被称为区块链3.0。
全栈程序员站长
2022/08/04
2.9K0
EKT多链技术谈 | EKT如何实现区块链世界的“用户共享”
在区块链系统中,用户体系是一个非常非常重要的部分。为什么这么说呢?因为它直接决定了一个区块链项目上用户的资产安全。接下来我会从技术角度详解——EKT的用户体系为何安全?为何能够向链上企业实现用户的共享?
风中凌乱的靓仔
2019/03/22
8420
EKT多链技术谈 | EKT如何实现区块链世界的“用户共享”
区块链入门总结区块链
新交易创建 -> 交易广播网络 -> 交易验证 -> 验证结果通过网络广播 -> 交易写账本
若与
2018/09/29
53K1
区块链入门总结区块链
权威指南 | 从入门到进阶,专家教你上手公链开发
了解公链的第一步,是阅读白皮书。白皮书是公链的灵魂,也是驱动公链开发的指导性文档,通过阅读白皮书,可以找到一条区块链开发的完整愿景和路线图。
区块链大本营
2018/12/20
1.5K0
权威指南 | 从入门到进阶,专家教你上手公链开发
substrate 合约模块简要剖析(一)
本文主要介绍 substrate 合约模块的实现逻辑,srml/contracts 提供了部署和执行 WASM 智能合约的功能。作为一个模块化的区块链框架,不管是未来的波卡平行链还是基于 substrate 拥有独立共识的链,比如 ChainX, 只要引入其合约模块,就具备了合约功能,可以成为一个智能合约平台。ChainX 目前就计划引入合约功能,对区块链智能合约开发者提供支持, 欢迎有兴趣的同学持续关注。
用户1558438
2019/09/27
1K0
substrate 合约模块简要剖析(一)
Omni Layer USDT区块链开发包简介【OmniTool.Java】
OmniTool.Java开发包适用于为Java应用快速增加对Omni/USDT数字资产的支持能力,即支持使用自有Omni节点的应用场景,也支持基于第三方API服务和离线裸交易的轻量级部署场景。官方下载地址:http://sc.hubwiz.com/codebag/omni-java-lib/。
用户1408045
2019/12/01
1.9K0
社区观点 | 理解比原链MOV链上交换协议
从Bitshare,Stellar到以太坊上的Etherdelta,Bancor,0x协议,去中心化交换协议也经过了好几代发展和很多模式的探索,每一代都通过前面的协议的痛点来进行改进和深化,
比原链Bytom
2020/01/02
4370
PalletOne调色板跨链的BTC实现
之前已经讲到了PalletOne调色板跨链以太坊ETH和ERC20的技术原理,接下来我们来讲解PalletOne跨链比特币BTC的技术原理。
深蓝studyzy
2022/06/16
7220
PalletOne调色板跨链的BTC实现
Bytom设计结构解读
设计Bytom 数据结构,组合了许多技术点,如 patricia tree,utxo, bvm, account model,protobuf,sql,memcache 等。本文会对一些技术点做以下两点分析。
比原链Bytom
2018/07/26
3620
Bytom设计结构解读
PalletOne调色板跨链的ETH提币实现
实现区块链的跨链,最主要的诉求就是Token的转移,而Token的跨链转移又分为充币和提币2种操作。以PalletOne调色板来说,如果要把ETH跨链到PalletOne上来流转,就是ETH的充币操作,要将PalletOne上的PETH(PalletOne上发行的与ETH1:1等值兑换的Token)跨链回到以太坊,变成ETH,就是ETH的提币操作。
深蓝studyzy
2022/06/16
1.1K0
PalletOne调色板跨链的ETH提币实现
蚂蚁区块链第6课 TEE硬件隐私合约链(含标准合约链)的框架和功能概述
本文介绍蚂蚁区块链的TEE硬件隐私合约链和标准合约链的框架和功能介绍,说明开发流程。 TEE 硬件隐私合约链是在标准合约链功能基础上采用TEE硬件叠加隐私保护相关功能。
辉哥
2019/04/01
3K0
蚂蚁区块链第6课 TEE硬件隐私合约链(含标准合约链)的框架和功能概述
推荐阅读
相关推荐
基于Ordinals在比特币L1网络实现EVM图灵完备智能合约支持——BxE协议
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档