سوليديتي (لغة برمجة)
هذه مقالة غير مراجعة.(يونيو 2023) |
التصنيف | |
---|---|
ظهرت في | |
الرخصة |
الإصدار الأول | |
---|---|
الإصدار الأخير | |
المستودع |
موقع الويب |
---|
سوليديتي [4] هي لغة برمجة موجهة للكائنات لتنفيذ العقود الذكية [5] [6] على منصات بلوكتشين مختلفة، وأبرزها إيثريوم. [7] سوليديتي مرخصة بموجب رخصة جنو العمومية العامة v3.0 . [8] تم تصميم سوليديتي بواسطة غافن وود [9] [بحاجة لمصدر غير أولي] وتم تطويرها بواسطة كريستسان رايتوايستنر و آلكس برغزازي والعديد من المساهمين السابقين في بلوكتشين إيثيريوم الأساسية. [10] يتم تشغيل البرامج في سوليديتي على جهاز آلة إيثريوم الافتراضية أو على أجهزة افتراضية متوافقة.
تاريخ
[عدل]تم اقتراح سوليديتي في آب \ أغسطس ٢٠١٤ من قبل غافن وود [9] [بحاجة لمصدر غير أولي] تم تطوير اللغة لاحقًا بواسطة فريق سوليديتي التابع لمشروع إيثيريوم ، بقيادة كريستيان رايتوايستنر.
سوليديتي هي اللغة الأساسية في إيثيريوم وكذلك في شبكات بلوكتشين أخرى، مثل Hyperledger Fabric blockchain الموجهة للمؤسسات. نشرت SWIFT دليلًا على المفهوم باستخدام سوليديتي الذي يعمل على Hyperledger Fabric. [11] [12]
وصف
[عدل]سوليديتي هي لغة برمجة مكتوبة بشكل ثابت مصممة لتطوير العقود الذكية التي تعمل على جهاز آلة إيثريوم الافتراضية (EVM) أو أجهزة افتراضية متوافقة. [13]
تستخدم سوليديتي بناء جملة يشبه ECMAScript مما يجعلها مألوفةً لمطوري الويب الحاليين؛ [14] ومع ذلك ، على عكس ECMAScript ، فإنها تحتوي على كتابة ثابتة وأنواع إرجاع متغيرة. تختلف سوليديتي عن اللغات الأخرى التي تستهدف آلة إيثريوم الافتراضية مثل Serpent وMutan في بعض النواحي المهمة. وهي تدعم متغيرات الأعضاء المعقدة للعقود الذكية، بما في ذلك التعيينات والهياكل الهرمية الاعتباطية. يدعم عقد سوليديتي الذكي خاصية الوراثة ، بما في ذلك الوراثة المتعددة باستخدام خطية C3 . تقدم سوليديتي واجهة تطبيق ثنائية (ABI) تسهل وظائف متعددة من النوع الآمن ضمن عقد ذكي واحد (تم دعم هذا لاحقًا بواسطة Serpent). يتضمن اقتراح سوليديتي أيضًا "مواصفات اللغة الطبيعية" ، وهو نظام توثيق لتحديد الأوصاف التي تتمحور حول المستخدم لتداعيات [الطريقة (برمجة الكمبيوتر) | طريقة] - المكالمات. [15] [16] [ مطلوب مصدر غير أساسي ]
مثال على برنامج سوليديتي: [17] [18]
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.4;
contract Coin {
// The keyword "public" makes variables
// accessible from other contracts
address public minter;
mapping(address => uint) public balances;
// Events allow clients to react to specific
// contract changes you declare
event Sent(address from, address to, uint amount);
// Constructor code is only run when the contract
// is created
constructor() {
minter = msg.sender;
}
// Sends an amount of newly created coins to an address
// Can only be called by the contract creator
function mint(address receiver, uint amount) public {
require(msg.sender == minter);
balances[receiver] += amount;
}
// Errors allow you to provide information about
// why an operation failed. They are returned
// to the caller of the function.
error InsufficientBalance(uint requested, uint available);
// Sends an amount of existing coins
// from any caller to an address
function send(address receiver, uint amount) public {
if (amount > balances[msg.sender])
revert InsufficientBalance({
requested: amount,
available: balances[msg.sender]
});
balances[msg.sender] -= amount;
balances[receiver] += amount;
emit Sent(msg.sender, receiver, amount);
}
}
مراجع
[عدل]- ^ وصلة مرجع: https://github.com/ethereum/solidity/blob/develop/LICENSE.txt. الوصول: 30 مارس 2023.
- ^ ا ب "Release 0.8.26". 21 مايو 2024. اطلع عليه بتاريخ 2024-05-25.
- ^ ا ب وصلة مرجع: https://github.com/ethereum/solidity. الوصول: 30 مارس 2023.
- ^ "قاموس أبجداو - البلوكتشين باللغة العربية". مؤرشف من الأصل في 2023-06-26. اطلع عليه بتاريخ 2023-06-26.
- ^ Afshar, Vala (17 Jul 2017). "Ethereum Is The Second Most Valuable Digital Currency, Behind Bitcoin". HuffPost (بالإنجليزية). Archived from the original on 2023-04-03. Retrieved 2019-04-10.
- ^ "SOFE Berlin: Swift unveils blockchain proof-of-concept". Finextra (News). 24 نوفمبر 2016. مؤرشف من الأصل في 2023-04-03. اطلع عليه بتاريخ 2016-11-24.
- ^ Finley, Klint. "Someone Just Stole $50 Million from the Biggest Crowdfunded Project Ever. (Humans Can't Be Trusted)". Wired (بالإنجليزية الأمريكية). Archived from the original on 2023-03-05.
- ^ The Solidity Contract-Oriented Programming Language، ethereum، 30 مارس 2023، مؤرشف من الأصل في 2023-03-30، اطلع عليه بتاريخ 2023-03-30
- ^ ا ب "Gavin Wood". gavwood.com. مؤرشف من الأصل في 2023-06-14. اطلع عليه بتاريخ 2023-03-30.
- ^ "List of contributors". غيت هاب. مؤرشف من الأصل في 2023-04-03.
- ^ Nikolic. "Finding The Greedy, Prodigal, and Suicidal Contracts at Scale".
{{استشهاد بأرخايف}}
: الوسيط|arxiv=
مطلوب (مساعدة) - ^ "Westpac joins SWIFT's blockchain proof of concept". ZDNet (بالإنجليزية). Archived from the original on 2023-04-03. Retrieved 2022-07-13.
- ^ "Hyperledger Fabric Tutorial - Create a blockchain app for loyalty points". IBM Developer (بالإنجليزية الأمريكية). Archived from the original on 2023-05-26. Retrieved 2019-04-10.
- ^ "Language Influences — Solidity 0.8.17 documentation". docs.soliditylang.org. مؤرشف من الأصل في 2023-03-30. اطلع عليه بتاريخ 2023-03-30.
- ^ Kapetanios-2008-06-27.
- ^ ethereum. "Ethereum Natural Specification Format". GitHub. مؤرشف من الأصل في 2023-04-03.
- ^ "Introduction to Smart Contracts — Solidity 0.8.19 documentation". docs.soliditylang.org. مؤرشف من الأصل في 2023-05-21. اطلع عليه بتاريخ 2023-03-30.
- ^
Schneier, Karthikeyan; Schneier, Antoine; Bhargavan, Cedric; Delignat-Lavaud, Anitha; Fournet, Gollamudi; Schneier, Bruce; Rastogi, Nadim; Sibut-Pinote, Aseem; Rastogi1, Thomas; Swamy, Nikhil; Zanella-Beguelin, Santiago (27 Aug 2016). "Short Paper: Formal Verification of Smart Contracts" (PDF). Microsoft Research, French Institute for Research in Computer Science and Automation, Harvard University (بالإنجليزية). Archived (PDF) from the original on 2016-08-27.
{{استشهاد بدورية محكمة}}
: صيانة الاستشهاد: أسماء عددية: قائمة المؤلفين (link)