译文出自:登链翻译计划
译者:翻译小组
校对:Tiny熊
Solidity团队于2021年6月10日发布0
调用f("12345678")将返回12345678,如同调用f("1234567890")。如果数组比目标固定类型短,它将在末尾填充零,所以调用f("1234")将返回1234。
使用bytes转换功能的一个好例子是在代理中使用:
//SPDX-License-Identifier:GPL-3
///Forwardsallcallstotheclientbutperformsadditionalchecksforcallsto"setOwner(address)"
(boolstatus,)=client
}
在0.8.5以前,不可能做到bytes4sig=bytes4(_payload);,相反,你必须使用以下方法进行转换:
bytes4sig=_payload|(bytes4(_payload)>>8)|(bytes4(_payload)>>16)|(bytes4(_payload)>>24);
税务专家:部分国家用户的Solana被盗资产可被视为税务亏损:8月5日消息,税务专家称,澳大利亚、加拿大和英国的加密货币投资者被盗的加密货币可能会被视为税务亏损。澳大利亚加密税务服务提供商 CryptoTaxCalculator 首席执行官 Shane Brunette 证实,在某些司法管辖区,由于黑客或漏洞利用而丢失的加密货币可能会被宣布为税务亏损,但需要提供相关证明。
对于居住在英国和加拿大的人来说,情况要复杂一些,但如果投资者愿意通过每个国家税务局规定的独特步骤,就可以提出税务亏损索赔。(Cointelegraph)[2022/8/5 12:04:14]
Yul中的Verbatim
完整的功能文档可以在这里找到。
这个版本为Yul引入了一组verbatim内置函数,允许你在二进制中注入任意字节码。目前只能通过纯Yul来实现,也就是说,不能通过内联汇编来实现。
主要有两个用途:
使用Yul不知道的操作码。
产生未被优化器修改的特定字节码序列。
这些函数是verbatimi_o("",...),其中:
n是一个介于0和99之间的小数,用于指定输入栈槽/变量的数量。
m是一个介于0和99之间的十进制数,指定输出栈槽/变量的数量。
知名博主:Phantom正着力推出由Wormhole驱动的以太坊-Solana桥接:1月27日消息,知名博主和黑客Jane Manchun Wong发推称,Phantom正在着力推出由Wormhole驱动的以太坊-Solana桥接。相关页面显示,“用户连接MetaMask,就可以在以太坊和Solana之间移动代币”。目前费用如下:
- 将ETH从以太坊桥接至Solana上的wWETH_v1需要约45美元;
- 将USDT/USDC/WETH从以太坊桥接至Solana上的wrapped变体需要约76美元;
- 将USDT/USDC/WETH从Solana桥接至以太坊需要约152美元。[2022/1/27 9:16:24]
data是一个字符串常量,包含字节的序列。
注意,在使用verbatim时有一些注意事项,关于它的细节可以在文档中找到。
用于新的操作码
作为一个实际的例子,我们可以用它来方便地将一个新提出的EVM操作码注入二进制。以提议的BASEFEE操作码为例,由于Solidity编译器目前不支持这个操作码,人们可以使用verbatim在Yul中实现它。
{functionbasefee()->out{out:=verbatim_0i_1o(hex"48"。sstore(0,basefee()。
Credix完成250万美元种子轮融资 Solana Ventures等参投:12月22日消息,Credix宣布完成250万美元种子轮融资,DRW Cumberland和ParaFi Capital领投,Transfero Swiss BRZ Solana Ecosystem Fund、Solana Ventures、Parrot Finance、MGNR、Mercurial、Petrock Capital、Fuse Capital等参投。
据介绍,Credix致力于在去中心化金融和现实世界资产之间架起桥梁,专注于为新兴市场提供无抵押贷款。[2021/12/22 7:55:15]
下面是另一个例子,它有一个输入参数为verbatim。
letx:=calldataload(0)//Thehex"600202"correspondstoEVMinstructions://PUSH02MUL//Thatis,itmultipliesxby2.letdouble:=verbatim_1i_1o(hex"600202",x)
上面的代码将产生一个dup1操作码来检索x,后面直接是600202。该代码被假定为消耗x的值,并在堆栈的顶部产生结果。然后编译器生成代码,为double分配一个堆栈槽,并将结果存储在那里。
用于Optimism使用场景
Solana基金会等合作启动创作者基金:官方消息,Solana基金会与去中心协议Metaplex、基于区块链技术的音乐共享平台Audius Music合作以启动一个创作者基金(Creator Fund),旨在将下一波音乐家、艺术家等引入加密货币领域。[2021/7/23 1:11:57]
第二个使用场景对于像Optimism这样的第2层解决方案来说是很有用的,以及其他类似的情况,比如字节码分析或调试。Optimism目前使用一个自定义的Solidity编译器,因为他们模拟了智能合约的执行,其中对状态的改变都不会直接执行,而是由对管理人合约的调用来代替,该合约存储了这些改变以备验证。这方面的问题是检查合约是否符合这些限制,特别是由于这必须由链上欺诈检测机制来完成。他们所做的是,检查合约是否使用了任何一个改变状态的操作码,除了调用管理人合约的call操作码之外。为了正确检测这个异常,导致这个call操作码的操作序列必须有一个特定的形式,通常,Solidity优化器会进行一些重新排列,并破坏这个形式。幸运的是,verbatim可以解决这个问题,这样Optimism就不需要再依赖自定义的Solidity编译器,可以使用所有后来的Solidity编译器版本而不需要修改。
Optimism编译器可以采用由Solidity编译器生成的Yul代码,附加以下Yul辅助函数,并在语法上将所有改变状态的内置函数调用替换为其ovm_对应的函数。例如,所有的sstore(x,y)调用被ovm_sstore(x,y)调用所取代。在这种替换之后,Yul优化器甚至可以再次运行。(这段代码只说明了sstore。)
密钥管理系统Torus宣布与Solana达成合作:金色财经报道,密钥管理系统Torus官方博客近日宣布已与Solana达成合作,双方将共同构建可扩展性的主流去中心化应用程序。[2020/4/24]
///Genericcalltothemanagercontract.functionovm_callManager(arguments,arguments_size,output_area,output_area_size){verbatim_4i_0o(hex"336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b",arguments,arguments_size,output_area,output_area_size。//Callamanagerfunctionwithtwoargumentsfunctionovm_kall_2i(signature,x,y){//Storetouchedmemoryinlocalsandrestoreitattheend.lettmp_a:=mload(0x00)lettmp_b:=mload(0x20)lettmp_c:=mload(0x40)mstore(0,signature)mstore(4,x)mstore(0x24,y)ovm_callManager(0,0x44,0,0)mstore(0x00,tmp_a)mstore(0x20,tmp_b)mstore(0x40,tmp_c。//Replaceallcallsto``sstore(x,y)``by``ovm_sstore(x,y)``functionovm_sstore(x,y){//Thehexcodeistheselectorof//thesstorefunctiononthemanagercontract.ovm_kall_2i(hex"22bd64c0",x,y。
完整的更新日志
语言特性方面
允许从bytes和bytes片转换到bytes1/.../bytes32。
Yul:增加verbatim内置函数,以注入任意字节码。
编译器功能方面
代码生成器:为panic异常代码插入辅助函数,而不是无条件地内联。
EVM:将默认的EVM版本设置为Berlin。
SMTChecker:函数定义可以用自定义的Natspec标签custom:smtcheckerabstract-function-nondet来注解,以便在调用时用非确定性的值抽象化。
标准JSON/组合JSON:新的工件functionDebugData,包含函数入口点的字节码偏移,未来可能会有更多信息。
Yul优化器:评估keccak256(a,c),当内存位置a的值在编译时是已知的,c是常数<=32。
AST的变化
增加成员hexValue,用于Yul字符串和十六进制字符还修复一些bug,衷心感谢所有帮助实现该版本的贡献者。
可以在这里下载新版本的Solidity。
本翻译由CellNetwork赞助支持。
来源:https://blog.soliditylang.org/2021/06/10/solidity-0.8.5-release-announcement/
参考资料
登链翻译计划:https://github.com/lbc-team/Pioneer
翻译小组:https://learnblockchain.cn/people/412
Tiny熊:https://learnblockchain.cn/people/15
Solidityv0.8.5:https://github.com/ethereum/solidity/releases/tag/v0.8.5
可以在这里:https://docs.soliditylang.org/en/v0.8.5/types.html#explicit-conversions
这里:https://docs.soliditylang.org/en/v0.8.5/yul.html#verbatim
文档:https://docs.soliditylang.org/en/v0.8.5/yul.html#verbatim
EIP-3198:https://eips.ethereum.org/EIPS/eip-3198
EIP-1559:https://eips.ethereum.org/EIPS/eip-1559
这里:https://github.com/ethereum/solidity/releases/tag/v0.8.5
CellNetwork:https://www.cellnetwork.io/?utm_souce=learnblockchain
免责声明:作为区块链信息平台,本站所发布文章仅代表作者个人观点,与链闻ChainNews立场无关。文章内的信息、意见等均仅供参考,并非作为或被视为实际投资建议。
本文来源于非小号媒体平台:
登链社区
现已在非小号资讯平台发布105篇作品,
非小号开放平台欢迎币圈作者入驻
入驻指南:
/apply_guide/
本文网址:
/news/10084552.html
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场
上一篇:
SendingLabs完成1250万美元种子轮融资,以构建「Web3通信堆栈」
本文来自decrypt,原文作者:JeffBensonOdaily星球日报译者|Moni6月17日凌晨,鲍威尔出现在为期两天的联邦公开市场委员会(FOMC)会议结束后的新闻发布会上.
1900/1/1 0:00:00Gate.io双周报为您囊括平台周期热点,助您快速掌握平台动态,状态持续“在线”。本周期Gate.io荣登CoinGecko中国十大热搜中心化交易所榜单第2名;Gate.io入选福布斯Advis.
1900/1/1 0:00:00昨天和大家介绍了关于元宇宙中提供活动空间的项目。实际上除了我介绍的那几个项目之外,还有其它一些知名项目比如thesandbox等.
1900/1/1 0:00:00尊敬的用户:币虎将于2021年6月16日18:00上线矿池HAM,FWATCH,X2P产品,并开展矿池礼包第一期活动,具体信息如下:一、币虎矿池:申购模式:固定份额,售完为止.
1900/1/1 0:00:00亲爱的AEX安银小伙伴:根据SUN官方计划,SUN将按照1:1000的比例拆分。当前我们已经完成拆分置换工作,详情>AEX安银关于支持SUN拆分的公告同时,我们将于2021年06月15日1.
1900/1/1 0:00:00近日,我们收到多名用户反馈,称不法分子假冒Gate.io官方已出现新的短信形式,其在沟通时可能会提及“您的订单需要核实,请在规定时间内点击链接进行解除”等内容.
1900/1/1 0:00:00