🔥 Gate 廣場活動|#发帖赢Launchpad新币KDK 🔥
KDK|Gate Launchpad 最新一期明星代幣
以前想參與? 先質押 USDT
這次不一樣 👉 發帖就有機會直接拿 KDK!
🎁 Gate 廣場專屬福利:總獎勵 2,000 KDK 等你瓜分
🚀 Launchpad 明星項目,走勢潛力,值得期待 👀
📅 活動時間
2025/12/19 12:00 – 12/30 24:00(UTC+8)
📌 怎麼參與?
在 Gate 廣場發帖(文字、圖文、分析、觀點都行)
內容和 KDK 上線價格預測/KDK 項目看法/Gate Launchpad 機制理解相關
帖子加上任一話題:#发帖赢Launchpad新币KDK 或 #PostToWinLaunchpadKDK
🏆 獎勵設定(共 2,000 KDK)
🥇 第 1 名:400 KDK
🥈 前 5 名:200 KDK / 人(共 1,000 KDK)
🥉 前 15 名:40 KDK / 人(共 600 KDK)
📄 注意事項
內容需原創,拒絕抄襲、洗稿、灌水
獲獎者需完成 Gate 廣場身份認證
獎勵發放時間以官方公告為準
Gate 保留本次活動的最終解釋權
我奶奶也能看懂:Solana的編程模型,究竟和ETH有啥區別?
作者:Foresight News,Alex Liu
Solana 是一個旨在支持 dApps 的高性能區塊鏈平臺,以其速度和可擴展性聞名,而這是通過獨特的共識機制和架構設計實現的。本文將以太坊作爲比較對象,簡要介紹 Solana 智能合約編程模型的特點。
智能合約、鏈上程序:
運行在以太坊上的程序被稱爲智能合約,它是位於以太坊上一個特定地址的一系列代碼(函數)和數據(狀態)。(哦豁,代碼數據耦合了)智能合約也是一個以太坊帳戶,稱之爲合約帳戶,它們有餘額,可成爲交易對象, 但是無法被人操控,被部署在網絡上作爲程序運行。
而運行在 Solana 上的可執行代碼被稱爲鏈上程序(On-chain Program),它們能解釋每筆交易中發送的指令。這些程序可以直接部署到網絡核心作爲原生程序,或由任何人發佈爲 SPL 程序。
你叫智能合約,我叫鏈上程序,大家說法不一樣,但都是指運行在區塊鏈上的代碼。張三李四王麻子都是人名,到底素質如何還得考察其他方面。
賬戶模型、數據解耦:
與以太坊類似,Solana 也是基於賬戶模型的區塊鏈,但 Solana 提供了一套不同於以太坊的賬戶模型,用不同的方式存儲數據。
在 Solana 中,賬戶可以保存錢包信息和其他數據,賬戶定義的字段包括 Lamports(賬戶餘額)、Owner(賬戶所有者)、utable(是否爲可執行賬戶)和 Data(賬戶存儲的數據)。每個賬戶都指定一個程序作爲其所有者,以區分賬戶用作哪個程序的狀態存儲。這些鏈上程序是隻讀或無狀態的:程序賬戶(可執行賬戶)只存儲 BPF 字節碼,不存儲任何狀態,程序會把狀態存儲在其他獨立賬戶(不可執行賬戶)中,即 Solana 的編程模型將代碼和數據解耦。
而以太坊賬戶主要是 EVM 狀態的引用,**其智能合約既存在代碼邏輯,又需要存儲用戶的數據。**這通常被認爲是 EVM 歷史遺留的設計缺陷。
不要小看這一區別!Solana 智能合約在根本上比具有耦合編程模型的區塊鏈(如以太坊)更難攻擊:
在以太坊中,智能合約「擁有者」是一個全局變量,與智能合約一一對應。因此,調用某個函數可能直接改變合約「擁有者」。
而在 Solana 中,智能合約的「擁有者」是與賬戶關聯的數據,而不是全局變量。一個賬戶可以有多個擁有者,而不是一對一關聯。攻擊者要利用智能合約的安全漏洞,不僅需要找到有問題的函數,還需要準備「正確」的賬戶來調用該函數。這一步驟並不容易,因爲 Solana 智能合約通常涉及多個輸入賬戶,並通過約束條件(例如 account1.owner==account2.key )來管理它們之間的關係。從「準備正確的賬戶」到「發動攻擊」的過程,足夠讓安全監控人員可以在攻擊之前主動檢測到創建與智能合約相關的「虛假」賬戶的可疑交易。
以太坊的智能合約就像是一個使用唯一密碼的保險庫,你只要得到了這個密碼,就能獲得完整的所有權;而 Solana 的則是一個有很多個密碼的保險庫,但想要獲取權限,你不但要想辦法搞到密碼,還要弄清楚這個密碼對應的編號,才能把鎖打開。
編程語言
Rust 是 Solana 上開發智能合約的主要編程語言。因爲它的性能和安全特性,使其適用於區塊鏈和智能合約的高風險環境。Solana 同時也支持 C、C++ 和其他語言(很不常見)。官方提供了 Rust 和 C 的 SDK 來支持開發鏈上程序。開發者可以使用工具將程序編譯成 Berkley Packet Filter (BPF) 字節碼(文件以 .so 爲擴展名 ),再部署到 Solana 鏈上,通過 Sealevel 並行智能合約運行時來執行智能合約的邏輯。
由於 Rust 語言本身上手難度高,且並不是爲區塊鏈開發定製,導致很多需求需要重複造輪子、代碼冗餘。(生產中許多項目採用 Backpack 聯創 Armani 創造的 Anchor 框架簡化開發)許多新創造的專用於區塊鏈開發的編程語言是基於 Rust 的,如 Cairo(Starknet)、Move(Sui、Aptos)。
生產中許多項目採用 Anchor 框架
而以太坊智能合約主要用 Solidity 語言開發(語法和 java 類似,代碼文件以 .sol 爲擴展名)。由於語法相對簡單以及開發工具更加成熟(Hardhat 框架、Remix IDE …)通常我們認爲以太坊的開發體驗更簡單爽快,而 Solana 開發的上手難度高。所以儘管現在 Solana 的熱度很高,事實上以太坊的開發者數目仍然是遠多於 Solana 的。
特定路況下,頂級賽車沒有改裝車跑得快。Rust 就像頂級賽車,有力地保證了 Solana 的性能和安全性,但非爲鏈上程序開發這條賽道而生,反而造成了駕駛(開發)難度的上升。採用基於 Rust 、爲鏈上開發定製語言的公鏈則相當於改裝了這輛賽車,使其更適應路況。Solana 在這點上處於劣勢。
總結
Solana 的智能合約編程模型是創新的。它提供了一種無狀態的智能合約開發方法,將 Rust 作爲主要編程語言,以及讓邏輯與狀態分離的架構,爲開發人員構建和部署智能合約提供了強大環境,確保安全性和性能,但開發難度較大。Solana 專注於高吞吐量、低成本和可擴展性,仍是尋求創建高性能 dApps 的開發人員目前的理想選擇。
參考鏈接