牛币圈

在牛币圈,发现市值低、开发强、有社区的牛币

下载牛币圈APP
Vite存储层设计详解之indexDB索引系统设计
indexDB主要通过k-v数据库levelDB来存储账本的索引,索引对象包括账户(Account)、交易(Transaction/AccountBlock)、快照(SnapshotBlock)、SendBlock/ReceiveBlock映射,在levelDB之外还添加了hot cache、memory cache两种类型的缓存提升读取性能,系统整体架构如下。
1.读写流程 数据写入时,数据会先写入memory cache,然后周期性(当snapshot block插入时)地将部分数据从memory cache拷贝到pending area中,pending area存储的是待写入levelDB的数据集合,在下次”异步批量Flush“时,会将数据从pending area写入levelDB。 在数据读取时,数据可能存在于hot cache、memory cache、levelDB中,数据读取的效率是hot cache > memory cache > levelDB。 2.levelDb索引 levelDB作为一个字节序的kv存储结构,简洁的实现对于固定类型的存储数据来说非常便于优

Vite存储层设计详解之blockDB文件系统设计
blockDB用来存储交易(Transaction/AccountBlock)、快照(SnapshotBlock)数据,这两种数据类型在一个快照生成时都是一个最终确认的状态,写入后无需修改,因此非常适合通过快速追加写入的方式进行高效率的存储。blockDB的存储就是按照追加写入优化的思路进行设计的,通过ringBuffer将需要顺序写入的数据依次写入一个队列,然后异步地批量写入文件。 1.写入数据的提交 一个SnapshotBlock和关联的AccountBlock列表会作为一个整体提交到存储层进行存储,存储层依次遍历AccountBlock和他们关联的SnapshotBlock,对相关数据结构进行序列化,然后写入存储。 2.ringBuffer 序列化后的数据并不会直接写入文件,而是写入一个称为ringBuffer的内存缓冲区,这个缓冲区由连续的10M的子数据段(Segment)构成,每个数据段有对应的递增序列号fileId。对于每个Block,首先会写入该Block序列化后的字节长度值,后面才是真正的数据内容。因为Block和段不是一一对应,就会存在一个Block的数据需要跨段的问

Vite存储层设计详解之blockDB文件系统设计
blockDB用来存储交易(Transaction/AccountBlock)、快照(SnapshotBlock)数据,这两种数据类型在一个快照生成时都是一个最终确认的状态,写入后无需修改,因此非常适合通过快速追加写入的方式进行高效率的存储。blockDB的存储就是按照追加写入优化的思路进行设计的,通过ringBuffer将需要顺序写入的数据依次写入一个队列,然后异步地批量写入文件。 1.写入数据的提交 一个SnapshotBlock和关联的AccountBlock列表会作为一个整体提交到存储层进行存储,存储层依次遍历AccountBlock和他们关联的SnapshotBlock,对相关数据结构进行序列化,然后写入存储。 2.ringBuffer 序列化后的数据并不会直接写入文件,而是写入一个称为ringBuffer的内存缓冲区,这个缓冲区由连续的10M的子数据段(Segment)构成,每个数据段有对应的递增序列号fileId。对于每个Block,首先会写入该Block序列化后的字节长度值,后面才是真正的数据内容。因为Block和段不是一一对应,就会存在一个Block的数据需要跨段的问

ViteX开通可挖矿无手续费稳定币交易
2020上半年是稳定币的爆发期,稳定币市场发展迅速,目前总市值已超过100亿,稳定币因为其价值稳定,所以被用户大量持有,用于存储价值或避险。市场上的稳定币种类繁多,比较主流的有USDT、USDC、TUSD、BUSD、DAI等。不同的场景往往需要使用不同的稳定币,另外,大量持有同一种稳定币的风险很高,用户往往需要分散持有,以对冲风险。因此,稳定币之间兑换的需求正在快速增长。
传统的稳定币兑换需要通过承兑商或中心化交易所介入,风险大,手续费高,而且流动性较差。随着DeFi和Open Finance的发展,去中心化的稳定币兑换协议将会逐渐取代传统的兑换渠道,通过“去中介化”,提高交易的安全性,并降低交易成本。 ViteX将于近期推出0费率稳定币兑换服务。该服务建立在完全去中心化交易协议ViteX的基础之上,可以充分保障资产安全,而且无需注册账户,以及繁杂的KYC验证。 同时,得益于Vite公链免费的特性,在兑换过程中不需要支付任何费用,无论是交易手续费,还是底层公链的矿工费。 此外,为了激励流动性,降低兑换滑点,稳定币交易对将开通VX挂单挖矿。因此,做市商在ViteX为稳定币提供流动性

Vite存储层设计概述
存储层负责完成Vite链各类数据的持久化存储,并提供缓存、多维度查询等功能。需要持久化存储的数据包括交易(Transaction/AccountBlock)、快照(SnapshotBlock)、账户状态(AccountState)、虚拟机状态(VmState)这四类数据。 一、存储层业务需求 每种类型的数据都有自己特殊的业务场景,相应的会有自己特有的读写需求: 1.交易 在Vite DAG的特性下,一个交易(Tx/Transaction)对应一个AccountBlock,除极个别情况外,交易总是由一个from地址发起,并对应一个唯一的to地址,这个发起的Tx称为SendTx,to地址收到该交易后,会生成一个ReceiveTx,SendTx和ReceiveTx是一一对应的。和其他链类似,每个Tx可以根据hash来进行查询,也可以根据地址来查询该地址关联的全部Tx,在Vite的场景中还有SendTx和ReceiveTx之间根据关联关系进行查询的需求。 2.快照 快照块是Vite的一条特殊的链,快照链的每个SnapshotBlock记录了该block快照的全部交易的快照信息,这样Snapsh

VITE内置定时器实现的设计
使用场景 定时任务是为了实现在Vite链上定期发交易,或者延时发交易的一种去中心化方案。例如,共识信息合约定期发放超级节点奖励,交易所合约定期删除过期订单,小游戏合约延期开奖等。
使用说明 用户在注册一个定时任务时,给定时任务合约发送一笔请求交易,支付一定的费用,并填写相关参数。请求交易哈希即为定时任务id。当达到任务触发条件时,定时任务合约会主动向交易接收地址发起一笔请求交易,调用指定接口,并传入任务id和触发条件。 定时任务参数包括: 触发类型:按时间触发/按快照块高度触发 开始时间或高度:第一次触发的时间或高度,如果填历史时间或高度,则以此为基准计算第一次触发时间或高度 触发间隔:触发时间间隔/触发高度间隔,时间间隔不低于一轮(即75s),高度间隔不低于75个快照块 触发窗口:触发时间窗口/触发高度窗口,时间窗口不低于一轮(即75s),高度窗口不低于75个快照块,触发窗口小于等于触发间隔。如果在窗口内未触发,则跳过本次触发 结束条件类型:到达指定时间或高度后结束/触发若干次后结束/永不结束 结束条件:指定时间或高度/触发次数/- 如何计算下一次触发:按固定间隔触发/按实际触发时

泛谈Vite JS
定位:JS版本的工具包集合 ViteJS主要提供: 基础功能,如网络连接、abi解析、地址派生等; 包装GoVite-API,如事件监听,获取交易列表,发送各类型交易等; 便捷功能,如通过助记词生成账户实例,实现快速发送交易等。 通过ViteJS可以快速构建钱包、开发DApp、连接全节点进行数据查询等等。 这篇文章会浅谈一下ViteJS的开发选型以及应用,并提供简单的应用例子。
开发环境 ViteJS基于TypeScript开发 工具 包管理:yarn 构建:webpack 测试:mocha JS包版本控制和发布:lerna
为什么使用TypeScript JS是一门动态类型语言,表现十分灵活; 但同样的,JS没有类型检查;提供对外接口代码补全、智能提示都不够友好;书写不规范很容易诱导发生很多隐蔽的bug,而且影响代码的可读性。 为改变这些问题,我们决定引入TypeScript。 TypeScript是JS的超集,对JS有很好的兼容性; TypeScript提供类型推断、类型定义以及类型检查; 代码开源、兼容第三方库、IDE插件齐全、社区也很活跃、上手难度低等等.......

新用户福利:注册交易瓜分 38 万VITE大奖+5,000美元合约体验金
为回馈广大用户对 VITE 社区的大力支持,Binance联合 VITE 举办新用户专享交易大赛,瓜分380,000 VITE新用户福利和5,000美元合约体验金 。 活动时间:2020年07月03日上午8:00至2020年07月10日上午8:00 (香港时间) 所有活动期间注册的 Binance 新用户,均可参与以下活动: 活动期间,参与任意永续合约或者交割合约交易,交易量大于等于 500 USDT(买入+卖出,不含刷量部分),即可参与 5,000 USDT合约体验券的抽奖活动。Binance将随机抽取 500人,每人奖励 10 USDT 合约体验券。 活动期间,参与VITE现货交易,VITE交易量大于等于 100,000 VITE(买入+卖出,不含刷量部分)的用户,将平分 380,000 VITE大奖。 注意&服务协议: 如何在Binance进行法币入金,请下载最新版Binance App。 VITE交易对:VITE/BTC 和 VITE/ USDT。 子账号不作为独立账号参与活动。子账号和杠杆账号的交易量将计算入主账号。 有效交易量:买入及卖出总量,不含账号对倒量。 活动期间,如

技术分享——以实例讲解Vite异步架构
前言 Vite 是新一代响应式区块链 (Reactive Blockchain), 采用了基于消息驱动的异步架构,在其生态体系中,异步是一个很重要的概念,也是 Vite 十分重要的一个创新点。
同步和异步 同步是指一个进程在执行某个请求的时候,如果该进程需要请求返回的结果,并且该请求需要一段时间才能返回进程需要的结果,那么这个进程会一直等待下去,直到收到返回结果才继续执行下去。同样是一个进程在执行某个请求,异步是指进程不需要一直等待请求返回的结果,在请求发出后,请求会在后台自动发出并获取数据,然后对数据进行处理,在此过程中,进程继续执行其他的操作,当有请求返回结果后,进程收到通知,再去对请求结果进行处理。 总结来说,同步和异步的区别在于:请求发出后,是否需要等待结果,才能继续执行其他的操作。异步的优势也十分明显,等量的操作时,异步会执行的更快,在相同的时间内,异步可以做更多的事。对于 Vite 来说,Vite 是 DAG,每个账户都有一个账本,一笔交易只改变一个账户的状态,所以多个账户之间的交易可以并行执行,这样系统就会有更高的吞吐。
Vite的异步 Vite 的异步设计有三个方面

技术分享——解析Vite异步架构设计
引言 Vite 是新一代响应式区块链 (Reactive Blockchain), 采用了基于消息驱动的异步架构,在其生态体系中,异步是一个很重要的概念,也是 Vite 十分重要的一个创新点。
Vite 中的异步设计主要包括三个方面: 请求和响应的异步设计 交易写入和确认的异步设计 合约间通信的异步设计 异步请求模型 Vite 中的交易分为请求交易和响应交易。无论是一笔转账还是一次合约调用,均会在账本上先后生成两笔交易。
一笔转账交易可以拆分成一个出账交易和一个入账交易;一个合约调用交易可以拆分成一个合约请求交易和一个合约响应交易;每个合约内部的消息调用,可以拆分成一个合约请求交易和一个合约响应交易。 这样拆分之后,每个交易只影响一个账户的状态,交易之间不会彼此阻塞,有利于与提高系统的吞吐能力。同时,不同账户的交易可以分布在网络中的不同的节点上,为系统带来了扩展性。 异步确认模型 Vite 中,交易写入账本和被系统确认也是异步的。不同的用户可以并行的将交易写入账本,快照链将以固定的速度对账本进行快照。一旦交易被快照,就可以认为是 1 次确认,随着快照链的增长,确认数也会累积。

抗击疫情公益项目——基于Vite技术的防疫物资溯源平台即将上线
在全民万众一心,共抗新冠肺炎疫情的背景下,Vite团队即将上线VitePlus防疫物资溯源平台。 ​
该平台基于Vite技术打造,可以实现捐赠信息链上全程溯源。从捐赠者发布捐赠信息,到物流运输等中间环节,直到最终受捐方接收捐赠,所有数据均保存在区块链上,真实可信,公开透明,不可篡改。
作为国内知名的区块链技术团队,Vite Labs始终积极推动区块链技术的实际应用。团队基于Vite的DAG账本、分层共识、快照链、异步智能合约等核心技术,开发了高性能联盟链项目——VitePlus,并与国内外政府和企业展开合作。正在进行中的合作项目包括:美国纽约州雪城市住房保障项目、联合国儿童基金会慈善贷款项目、西非经济共同体数字货币项目等。
中国区块链应用研究中心常务理事,Vite创始人刘春明表示:做为中国的企业,有义务为抗击疫情作出自己的贡献。该项目是公益项目,不寻求商业利益,免费提供给全社会以及政府部门使用。
目前团队正在与各地政府沟通,以保证该平台信息的有效性,更好的发挥平台的价值。
部分网站截图
请通过Vite官方渠道了解最新动态: 官网:https://www.vite.or