INT主网4.0兼容EVM和WASM这两种虚拟机,本篇文章为大家介绍在INT主网4.0中开发中的WASM相关问题。
什么是WASM?
WASM,全称为WebAssembly,是一种新的编码方式,可以在现代浏览器中运行。作为一种低级的类汇编语言,WASM具有紧凑的二进制格式,可以接近原生的性能运行,并为诸如C/C++等语言提供一个编译目标,以便它们可以在Web上运行。同时,WASM也是W3CWebAssemblyCommunityGroup开发的web浏览器的标准,获得了各大主要浏览器厂商的积极支持。
对于网络平台而言,WASM提供了一条途径,使得以各种语言编写的代码都可以以接近原生的速度在Web中运行。谷歌、苹果、微软三大竞争公司同时支持WASM作为中间代码,所有其他语言(c,c++,java)编写的程序都可以编程成WASM字节码的程序,在这种情况下,以前无法以此方式运行的客户端软件都可以在Web中运行了。INT选择兼容WASM的原因?
Web3浏览器Opera推出奖励计划Opera Points:5月29日消息,Web3 浏览器 Opera 发文称,已推出奖励计划Opera Points,首先会在西班牙、巴西和墨西哥启动,用户购物时可以赚取Opera Points并存储在其原生钱包 Opera Wallet 中。该积分奖励计划现阶段支持美元、欧元等货币兑换,很快将支持 Opera 生态系统内的其他产品。此外,Opera 下一步计划将推出基于区块链的积分系统,为用户提供基于 Web3 的线上购物方式,并且能将Opera Points兑换成加密资产。[2023/5/29 9:48:20]
对于INT的开发人员而言,WASM有着诸多对开发者友好的特点:
Rococo公布接入测试插槽项目顺序:预计分五批上线Kilt、Interlay为第二批:1月16日,波卡中国社区PolkaWorld介绍Rococo团队发布的V1测试插槽的总体策略。Polkadot给出了波卡测试网Rococov1平行链的大致上线顺序,为:第二批:Kilt、Interlay(预计上线时间:1月18日当周);第三批:Darwinia、Phala、Crust、HydraDX;第四批:Bifrost、StarksNetwork、Clover、Zenlink;第五批:ChainX、Robonomics、PatractHub、MathWallet。
此外,策略还提到,为快速改善Rococo网络,Parity将定期更新并重新启动网络。这涉及到客户端和runtime代码的更新以及链状态的重置。最初的平行链每隔几天上线一批,只有在网络稳定运行时才会添加新的平行链。在不稳定时期可能会取消平行链的注册以减轻网络负担,在稳定性提高后重新注册这些平行链。当网络可以顺利扩展时,将以先到先得的方式注册平行链。[2021/1/16 16:19:41]
首先,WASM采用二进制编码,在程序执行过程中的性能表现优越;
动态 | Bittrex将于10月29日推出Bittrex Global并关闭旧平台Bittrex International:据官方消息,Bittrex宣布将于10月29日开放Bittrex Global并关闭Bittrex International。从10月21日开始,符合条件的Bittrex International客户便可选择接受Bittrex Global的服务条款。这些新的服务条款与Bittrex Global访问有关,将于10月29日生效,之后符合条件的客户将自动被重定向到新平台Bittrex Global。一旦完成转移,系统将提示客户接受Bittrex Global服务条款(如果此前未完成的话)。此外,Bittrex Global将推出一个新的客户支持网站。[2019/10/22]
其次,就存储成本而言,相对于文本格式,二进制编码的文本占用的存储空间更小,可以有效地降低存储成本;
动态 | 加密交易所Bitpoint母公司Remixpoint向AI风险投资企业投资:据日本时事通讯社消息,日本持牌加密货币交易所Bitpoint母公司Remixpoint向人工智能(AI)风险投资企业Daisy(东京都千代田区)进行了数千万日元的投资。Daisy公司将AI预测技术应用于Remixpoint公司旗下的加密资产(虚拟货币)交易业务和电力业务系统,旨在实现稳定化和最优化。[2019/6/25]
最后,WASM支持的多语言使我们可以使用C/C++/RUST/Go等多种语言编写智能合约并编译成WASM格式的字节码,也就是说INT可以兼容所有用c,c++等高级语言编写的程序,INT的应用层生态将会更加丰富,想要参与INT生态建设也会变成一件更加容易的事情,开发人员的学习成本会变得非常低。
另外WASM字节码既可以编译成机器码后执行,又可以使用解释器直接执行,兼容性和性能两者兼有,选择了WASM,可以依托WebAssembly生态,为INT获得更多的发展可能性。
INT基于WASM做出哪些创新?
1)Gas手续费的收取:
INT从Ethereum吸取经验教训,并根据需要对WASM执行的每条指令收费。当合同执行的GAS费达到调用者给出的限额时,WASM虚拟机自动终止合同的继续执行。
2)系统调用接口:
WASM模块支持引入其他的WASM模块以调用其中的函数,INT提供几类的系统调用接口:
Libc标准库部分接口:主要是与内存操作相关的函数,如malloc和free。因为WASM虚拟机作为WASM合约执行的宿主环境,需要对合约运行的虚拟内存进行分配与管理;
区块链相关接口:为方便WASM合约方便访问区块链相关信息,INT提供了存储读写、账户转账、事件触发、交易信息等接口;
Library:主要是提供了BigInt和json操作函数,方便合约开发者的编写;
3)内存管理:
WebAssembly提供了内存管理来处理字符串及其他复杂数据类型,内存在WASM的定义下,是一个随着时间增长的字节数组。
所以,INT的WASM虚拟机在执行合约前,会根据合约导入的内存,为其创建内存实例,并初始化对应的data数据段内容。
具体实现上,INT采用了Buddy伙伴算法来管理WASM合约的运行内存,默认的初始内存大小为64KB,最大可增长到256KB。
4)简化合约开发:
合约作为区块链体系的商业载体,具有区块链的应用价值。所以在合约开发方面,INT一直在努力降低开发门槛,简化开发流程,让更多的项目或企业可以将业务应用迁移到INT系统中来。
当然,WASM作为正在发展中的技术,除了有诸多的好处之外,也给开发工作带来了一定的难度。
在内部的合约开发测试过程中,我们发现在引入了WASM虚拟机后发生了内存泄漏。由于INT的底层架构是使用go语言来实现的,当合约通过系统调用接口访问底层native方法时,底层方法返回的数据保存在WASM的线性内存中,由于这个内存并不是开发者通过malloc分配的,所以会经常忘记调用free来释放,造成内存泄漏。加上底层限制了一个合约可以使用的内存上限是256KB,所以会造成功能复杂的合约,最后由于超出内存上限而执行失败。INT的开发人员在SDK中采用RAII和SharedPtr方式,不再暴露原始的内存地址,而是返回栈上的临时对象,最终解决了内存泄漏的问题。
本期很高兴为大家介绍了INT主网4.0的智能合约运用到的WASM虚拟机的相关问题,INT的开发人员正在进行积极的主网4.0开发工作,期待后面可以为大家带来更多4.0的技术性文章。
最初的丝绸之路市场已经关闭了七年之久了,直到今天,仍缺少444,000个价值48亿美元的比特币.
1900/1/1 0:00:002020年10月,上海区块链国际周即将拉开帷幕。作为老牌交易所,行业影响力的领导者、传播者,币赢将在中国魔都-上海,举办主题为“币赢超级晚”的沉浸式丛林电音趴.
1900/1/1 0:00:00关于Gate.io投票上币活动Gate.io一贯保持不收上币费,严格审核,真实透明的态度上线项目和提供多样化的区块链资产交易服务.
1900/1/1 0:00:00据Coindesk消息,开放性网络平台NEARProtocol在5月份发布了为期6个月的路线图之后正式上线.
1900/1/1 0:00:00公告编号2020101301各位关心ZBG.io的项目方和投资者们:ZBG将于HKT2020年10月14日上线SPEED项目,并开放SPEED/USDT交易对,具体时间如下.
1900/1/1 0:00:00亲爱的Pool-X用户,Pool-X将于2020年10月15日20:00:00(UTC8)开启RioFuel锁仓挖矿活动,本币年化高达50%.
1900/1/1 0:00:00