譯文出自:登鏈翻譯計劃
譯者:翻譯小組
校對: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);
OpenSea暗示將于下月支持Solana NFT交易:金色財經報道,OpenSea 在推特上發布的視頻宣傳中暗示,從下個月開始,NFT 交易者將能夠在 OpenSea 的網站上買賣 Solana NFT。OpenSea 沒有透露具體的發布日期。Solana 將是繼 Ethereum、Polygon 和 Klatyn 之后 OpenSea 支持的第四個區塊鏈。[2023/3/30 13:33:55]
Yul中的Verbatim
完整的功能文檔可以在這里找到。
這個版本為Yul引入了一組verbatim內置函數,允許你在二進制中注入任意字節碼。目前只能通過純Yul來實現,也就是說,不能通過內聯匯編來實現。
主要有兩個用途:
使用Yul不知道的操作碼。
產生未被優化器修改的特定字節碼序列。
這些函數是verbatimi_o("",...),其中:
n是一個介于0和99之間的小數,用于指定輸入棧槽/變量的數量。
m是一個介于0和99之間的十進制數,指定輸出棧槽/變量的數量。
data是一個字符串常量,包含字節的序列。
注意,在使用verbatim時有一些注意事項,關于它的細節可以在文檔中找到。
Solana生態DeFi協議Friktion:關閉其前端網站,敦促客戶提取資金:1月27日消息,基于Solana的投資組合管理平臺Friktion表示,正在關閉其前端網站,敦促客戶撤回資產。這意味著前端網站將不再提供相同的服務,但基礎協議仍然可以在區塊鏈上訪問。
根據DeFiLlama數據顯示,Friktion總市值已從去年4月的1.64億美元峰值下降至500萬美元,下降了約97%。據悉,該平臺在運行期間交易了30億美元,擁有超2萬個用戶錢包。
金色財經此前報道,去年11月,基于Solana的投資組合管理平臺Friktion首次為機構客戶推出了加密貨幣貸款產品。[2023/1/27 11:32:34]
用于新的操作碼
作為一個實際的例子,我們可以用它來方便地將一個新提出的EVM操作碼注入二進制。以提議的BASEFEE操作碼為例,由于Solidity編譯器目前不支持這個操作碼,人們可以使用verbatim在Yul中實現它。
{functionbasefee()->out{out:=verbatim_0i_1o(hex"48"。sstore(0,basefee()。
下面是另一個例子,它有一個輸入參數為verbatim。
letx:=calldataload(0)//Thehex"600202"correspondstoEVMinstructions://PUSH02MUL//Thatis,itmultipliesxby2.letdouble:=verbatim_1i_1o(hex"600202",x)
y00ts:mint t00b #647以超500 SOL價格售出,高出地板價近4倍:9月12日消息,據推特用戶@purewisdom{246}透露,y00ts:mint t00b #647已經以500.02SOL的價格售出,約合17,500美元,該價格高出地板價近4倍。
此外,社區分析這筆交易疑似通過Solana生態NFT交易平臺Yawww完成的。[2022/9/12 13:24:02]
上面的代碼將產生一個dup1操作碼來檢索x,后面直接是600202。該代碼被假定為消耗x的值,并在堆棧的頂部產生結果。然后編譯器生成代碼,為double分配一個堆棧槽,并將結果存儲在那里。
用于Optimism使用場景
第二個使用場景對于像Optimism這樣的第2層解決方案來說是很有用的,以及其他類似的情況,比如字節碼分析或調試。Optimism目前使用一個自定義的Solidity編譯器,因為他們模擬了智能合約的執行,其中對狀態的改變都不會直接執行,而是由對管理人合約的調用來代替,該合約存儲了這些改變以備驗證。這方面的問題是檢查合約是否符合這些限制,特別是由于這必須由鏈上欺詐檢測機制來完成。他們所做的是,檢查合約是否使用了任何一個改變狀態的操作碼,除了調用管理人合約的call操作碼之外。為了正確檢測這個異常,導致這個call操作碼的操作序列必須有一個特定的形式,通常,Solidity優化器會進行一些重新排列,并破壞這個形式。幸運的是,verbatim可以解決這個問題,這樣Optimism就不需要再依賴自定義的Solidity編譯器,可以使用所有后來的Solidity編譯器版本而不需要修改。
Solana Pay上線交易請求功能,可實現商家和消費者之間的雙向交互:5月5日消息,Solana 發推稱其支付協議 Solana Pay 現已上線交易請求功能,可實現商家和消費者之間的雙向交互,目前可以通過結賬應用和移動錢包之間的交互請求將任何 Solana 交易帶入現實世界,從而實現 NFT 鑄造、動態折扣、代幣化忠誠度計劃等。
此前消息,2 月份,Solana Labs 宣布推出 Solana Pay 支付協議,使得商家可以直接從消費者處接受加密支付,目前支持穩定幣 USDC、Solana 的原生代幣 SOL 以及其他基于 Solana的代幣。[2022/5/5 2:51:36]
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。
Coin98 Ventures成立基金以支持Solana區塊鏈開發:越南區塊鏈投資公司Coin98 Ventures已成立了500萬美元的基金,以在東南亞支持Solana區塊鏈的開發。在接下來的三年中,該基金將向涉足東南亞地區的早期創業公司提供高達10萬美元的資金。(Decrypt)[2021/1/27 13:36:32]
完整的更新日志
語言特性方面
允許從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通信堆棧」
本文為Swarm官方最新發布的白皮書全文,由藍貝殼云儲整理翻譯,星球日報經授權發布。內容僅供參考,最終請以官方白皮書中內容為準.
1900/1/1 0:00:00前言加密貨幣能否成為法定貨幣,甚至取代中央政府發行的主權貨幣,一直是幣圈與各大傳統金融機構的熱門議題.
1900/1/1 0:00:00為了與用戶更好地溝通,讓用戶簡單快捷地獲取平臺動態,我們特別設置了“運營周報”欄目:總結平臺上周熱點,讓您在短時間內迅速了解近期平臺信息,呈現最真實透明的LOEx給您.
1900/1/1 0:00:00活動時間: 2021年6月16日16:00~2021年6月23日16:00(UTC8) 活動規則: 活動期間.
1900/1/1 0:00:00得益于智能合約新興平臺的異軍突起,以太坊一直是2020年加密經濟的明星項目。除了DeFi之外,非同質化代幣另辟蹊徑,給以太坊帶來新生機.
1900/1/1 0:00:00區塊少數派:區塊鏈投資教育與創投孵化社區。區塊少數派專注區塊鏈行業投資教育,同時聚焦挖掘全球優質項目,歡迎加入社區,共享財富密碼.
1900/1/1 0:00:00