譯文出自:登鏈翻譯計劃
譯者:翻譯小組
校對: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);
Messari:2023年第一季度Solana流通市值環比上漲118.1%:4月24日消息,Messari發布Solana2023年第一季度報告,其中,Solana流通市值隨大盤反彈,環比上漲118.1%,Solana收入(以SOL為單位)環比增長68.7%。BONK空投、NFT收藏和DePIN應用程序推動了第一季度的費用支付與交易活動。就DeFi而言,第一季度以美元計價的Solana TVL環比增長23.5%,以SOL計價的TVL下降40.7%,表明SOL價格上漲。在Marinade Finance、Lido、Jito和JPool的帶動下,LSD環比增長顯著。
在NFT方面,Solana上每日新增NFT總數從260萬個環比增加到290萬個,增幅為11.8%。同時,以美元計價的二級市場NFT銷量增長了35.5%,以SOL計價的銷售額增長了19.3%并達到歷史新高。在第一季度,獨立買家繼續超過獨立賣家,買家總數為889,000人,而賣家為887,000人。[2023/4/24 14:22:43]
Yul中的Verbatim
完整的功能文檔可以在這里找到。
這個版本為Yul引入了一組verbatim內置函數,允許你在二進制中注入任意字節碼。目前只能通過純Yul來實現,也就是說,不能通過內聯匯編來實現。
主要有兩個用途:
Binance.US上線SOL/USDC和ADA/USDC交易對:據官方消息,Binance.US已經上線SOL/USDC和ADA/USDC交易對。[2022/12/9 21:34:02]
使用Yul不知道的操作碼。
產生未被優化器修改的特定字節碼序列。
這些函數是verbatimi_o("",...),其中:
n是一個介于0和99之間的小數,用于指定輸入棧槽/變量的數量。
m是一個介于0和99之間的十進制數,指定輸出棧槽/變量的數量。
data是一個字符串常量,包含字節的序列。
注意,在使用verbatim時有一些注意事項,關于它的細節可以在文檔中找到。
用于新的操作碼
作為一個實際的例子,我們可以用它來方便地將一個新提出的EVM操作碼注入二進制。以提議的BASEFEE操作碼為例,由于Solidity編譯器目前不支持這個操作碼,人們可以使用verbatim在Yul中實現它。
{functionbasefee()->out{out:=verbatim_0i_1o(hex"48"。sstore(0,basefee()。
下面是另一個例子,它有一個輸入參數為verbatim。
Solana Status 發布被攻擊用戶調查表格,以收集信息確認攻擊原因:8月3日消息,Solana Status發推表示,如果用戶的某Solana錢包遭受攻擊,是受影響的7767人之一,可填寫對應表格以確認問題,目前需要每個人的相關信息幫助才能弄清楚此次Solana攻擊事件發生了什么。
此前報道,Solana Status發推稱工程師目前正在與多個安全研究人員和生態系統團隊合作,以確定漏洞利用的根本原因,目前尚不清楚具體原因。[2022/8/3 2:55:58]
letx:=calldataload(0)//Thehex"600202"correspondstoEVMinstructions://PUSH02MUL//Thatis,itmultipliesxby2.letdouble:=verbatim_1i_1o(hex"600202",x)
上面的代碼將產生一個dup1操作碼來檢索x,后面直接是600202。該代碼被假定為消耗x的值,并在堆棧的頂部產生結果。然后編譯器生成代碼,為double分配一個堆棧槽,并將結果存儲在那里。
用于Optimism使用場景
第二個使用場景對于像Optimism這樣的第2層解決方案來說是很有用的,以及其他類似的情況,比如字節碼分析或調試。Optimism目前使用一個自定義的Solidity編譯器,因為他們模擬了智能合約的執行,其中對狀態的改變都不會直接執行,而是由對管理人合約的調用來代替,該合約存儲了這些改變以備驗證。這方面的問題是檢查合約是否符合這些限制,特別是由于這必須由鏈上欺詐檢測機制來完成。他們所做的是,檢查合約是否使用了任何一個改變狀態的操作碼,除了調用管理人合約的call操作碼之外。為了正確檢測這個異常,導致這個call操作碼的操作序列必須有一個特定的形式,通常,Solidity優化器會進行一些重新排列,并破壞這個形式。幸運的是,verbatim可以解決這個問題,這樣Optimism就不需要再依賴自定義的Solidity編譯器,可以使用所有后來的Solidity編譯器版本而不需要修改。
Jito Labs推出Solana MEV儀表盤:7月6日消息,Jito Labs宣布推出Solana MEV儀表盤,并表示從今年1月以來已對360億筆交易進行了分類,在借貸協議Mango和Solend中標記了原子套利和清算交易。Jito Labs表示,預估今年以來套利和清算交易的利潤最低為4500萬美元,但96%的套利和清算交易的嘗試是失敗的。此外,包含MEV交易的區塊數量今年已增長到25%。Jito Labs還表示,Solana將通過增加本地費用市場等方式緩解MEV的負面影響,Jito Labs也將推出包括MEV分發系統、區塊構建器等產品來優化網絡使用體驗。[2022/7/6 1:54:16]
Optimism編譯器可以采用由Solidity編譯器生成的Yul代碼,附加以下Yul輔助函數,并在語法上將所有改變狀態的內置函數調用替換為其ovm_對應的函數。例如,所有的sstore(x,y)調用被ovm_sstore(x,y)調用所取代。在這種替換之后,Yul優化器甚至可以再次運行。(這段代碼只說明了sstore。)
///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。
Chillchat完成185萬美元融資,Solana Ventures領投:2月22日消息,基于 Solana 的像素藝術 NFT 元宇宙 Chillchat 宣布完成 185 萬美元種子輪融資,投后估值達 1000 萬美元。本輪融資由 Solana Ventures 領投,FTX Ventures、Animoca Brands、Griffin Gaming Partners、A&T Capital、Yield Guild Games SEA Limited、Infinity Ventures Crypto Fund、Diamond Hands Ventures 以及 PKO Investments syndicate 等參投。本輪融資資金將幫助 Chillchat 完善產品并擴充團隊,進一步開發 Web3 工具、渠道和基礎設施。[2022/2/22 10:07:11]
完整的更新日志
語言特性方面
允許從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通信堆棧」
Tags:SOLSTOTIMLIDsolana幣的最新價格Don’t Know Your CustomerSentiment TokenLido DAO Token
鏈聞消息,由MixMarvel孵化的面向未來虛擬世界的區塊鏈基礎設施RocketProtocol宣布更名為RangersProtocol,并以6300萬美元估值完成機構融資.
1900/1/1 0:00:00ETH旨在解決全球網絡去中心化,點對點的交易傳輸。互聯網的三大技術,傳輸,存儲,計算,以太坊已經完成兩點,最后一個板塊就是存儲來成.
1900/1/1 0:00:00據Cointelegraph消息,總部位于紐約的非營利組織Charity:water,在其比特幣水信托基金啟動的三周內,已經收到了超過100萬美元的BTC捐款.
1900/1/1 0:00:00鏈聞消息,去中心化合成資產協議UMA宣布推出新的資金庫治理架構,通過RangeToken幫助DAO在沒有清算風險的情況下借入資金,其作用類似于傳統金融中的可轉債.
1900/1/1 0:00:006月15日12:00—6月22日12:00我們將開啟OrbitChain超級空投福利,$15,000美元ORC等你來拿!新用戶請點擊注冊Gate.io并參與活動.
1900/1/1 0:00:00親愛的用戶:幣安將於香港時間2021年06月11日11:30上線ETHBUSD1-50倍永續合約。注意:ETHBUSD永續合約是正向合約,即穩定幣合約,採用穩定幣作為保證金.
1900/1/1 0:00:00