Author

Topic: العقود الذكية (Read 186 times)

copper member
Activity: 250
Merit: 412
Building A Crypto Empire
August 27, 2020, 04:23:04 PM
#6
تم اضافة شرح نقطة رقم 11
(القراءة والتحدث مع عقد لقفل كمية من الرمز لمدة محددة)

المرحلة القادمة هي اضافة شرح نقطة رقم 12 ان شاء الله.
copper member
Activity: 250
Merit: 412
Building A Crypto Empire
August 06, 2020, 04:23:20 PM
#5
legendary
Activity: 1680
Merit: 1853
#SWGT CERTIK Audited
August 06, 2020, 01:00:08 PM
#4
شكرا لك أخي على هذه الشرح المفصل والممتع في الواقع لقد ألقيت الضوء على كثير من النقاط الهامة لذك لدي بعض التساؤلات:
1 - بالنسبة للنقطة رقم 7 (عقود ذكية للمنصات اللامركزية) إذا قمت بإعطاء approve  لمنصة لامركزية نصابة هل يعني هذا أنها يمكن أن تسرق جميع عملاتك الموجودة في المحفظة؟ هل يمكن إلغاء هذا التصريح؟
2 - بالنسبة للنقطة رقم 8. (العقود الذكية لبيع العملات الرمزية) هل تتم هذه العملية بشكل آلي بمعنى أنه بمجرد أن ترسل الإيثريوم إلى عنوان العقد الذكي تحصل على كمية مقابلة من الرمز أم أن صاحب العقد يمكنه التحكم بهذه العملية وبالتالي لا يرسل لك أي شيء أو يؤجل العملية؟
3 - بالنسبة ل (isPauser: التأكد ان كان العنوان لديه صلاحيه عمل توقيف التحويلات لرمز.) هذه الخاصية خطيرة جدا هل تعني أن بإمكان صاحب العقد تجميد العملات وهي في محفظتك؟ وفي مثل هذه الحالة ما الذي يمكن فعله؟ يعني هل يمكن التصرف في هذه الرموز أم أنك لا تستطيع التصرف بها بعد الآن؟
4 - بالنسبة ل (isMinter: التأكد ان كان العنوان لديه صلاحية إضافة رموز جديدة.) هل يمكن إضافة رموز جديدة بعد إنشاء العقد؟ بمعنى إذا كان هناك توكن توتال سبلاي له 3 مليون على سبيل المثال هل يمكن إضافة رموز لاحقاً بحيث يصبح 10 مليون مثلا؟ إذا كان ذلك ممكن فهذا سيؤثر على سعر التوكن بشكل كبير.
5 - بالنسبة ل (-Unpause:- تستخدم هذه الميزة لأنهاء تجميد التحويلات للرمز بعدما تم تجميد جميع التحويلات في العقد الذكي.) هل يمكن استخدام هذه الميزة من قبل أي شخص أم فقط من قبل مالك العقد؟

في النهاية مشكور على هذا الموضوع الممتع
copper member
Activity: 250
Merit: 412
Building A Crypto Empire
August 05, 2020, 07:09:27 PM
#3
شكرا لك صديقي ، اتمنى مواصلة سلسلة الشروحات فيما يخص العقود الذكية
لا اعتقد ان هناك محتوى عربي يخص هذا الموضوع من قبل
حقيقة الموضوع يحتاج للقراءة اكثر من مرة خاصة وان هناك الكثير من المعلومات وحينها يمكننا المناقشة او السؤال ان لم يكن لديك مانع

السلام عليكم اخي

قررت انشاء الموضوع لأن لم ارى موضوع يخص العقود الذكية في القسم العربي. بما ان لدي القليل من الخبرة في هذا المجال اردت ان اشارك هذه المعلومات مع الجميع في القسم العربي

بطبع اذا كان لديك او لدى اي شخص اخر اسئلة عن الموضوع، سأحاول بأقصى جهدي ان اقوم بأجابتكم

اتمنى ان يستفيد جميع الأعضاء

hero member
Activity: 500
Merit: 500
August 05, 2020, 07:01:08 PM
#2
شكرا لك صديقي ، اتمنى مواصلة سلسلة الشروحات فيما يخص العقود الذكية
لا اعتقد ان هناك محتوى عربي يخص هذا الموضوع من قبل
حقيقة الموضوع يحتاج للقراءة اكثر من مرة خاصة وان هناك الكثير من المعلومات وحينها يمكننا المناقشة او السؤال ان لم يكن لديك مانع
copper member
Activity: 250
Merit: 412
Building A Crypto Empire
August 05, 2020, 01:49:53 PM
#1
العقود الذكية


هناك طريقتان لقراءة + التحدث مع العقد الذكي على سلسلة الأثيريوم عبر استخدام:

1- Truffle + تعدين الأثيريوم للأتصال بسلسلة بشكل مباشر, هذه الطريقة معقدة قليلاً سأقوم بشرحها في المستقبل ان شاء الله بعد الأنتهاء من الشرح الحالي. هذه الطريقة ممكن استخدامها في برنامج يحتاج التحدث مع عقد ذكي ما.
2- عبر استخدام اثرسكان Etherscan  + ميتاماسك Metamask (الطريقة الأسهل)  
قمت بشرح الطريقة الأسهل لتصل المعلومات للأعضاء بوضوح. اتمنى ان يستفيد الجميع.



1.ماهي العقود الذكية؟
2.العقود الذكية على نظام لامركزي
3.العقود الذكية على نظام الأثيريوم
4.استخدام أثرسكان Etherscan  باحث سلسلة الأثيريوم لقراءة العقد الذكي واستخدام وظائف العقد الذكي عن طريق محفظة ويب 3 كل ميتاماسك
5.شرح العقد الذكي خلف رموز ال أي ار سي 20
6.شرح العقود الإضافية لرموز
7.شرح العقود الذكية خلف المنصات اللامركزية على نظام الأثيريوم
8.شرح العقود الذكية خلف بيع رموز ال أي ار سي 20
9.ما هو المترجم Compiler
10.القراءة والتحدث مع عقد رمز أي ار سي 20 (الكود والواجهة الأمامية)
11.القراءة والتحدث مع عقد لقفل كمية من الرمز لمدة محددة (الكود والواجهة الأمامية)  
12.القراءة والتحدث مع عقد لبيع الرمز (الكود والواجهة الأمامية)

سأكمل شرح الموضوع مع الوقت متى احصل على فرصة في الأيام القادمة ان شاء الله. بعد الأنتهاء الموضوع القادم سيكون شرح انشاء العقود الذكية بتفصيل الممل.





1. العقود الذكية هي عبارة عن عقد برمجي رقمي يقوم بعمل معين عند حدث شروط معينة. على سبيل المثال تبادل بين شخصين واستخدام العقد الذكي لأتمام العملية بشفافية ومصداقية.

2. أحد اهم النقاط التي يجب ان تكون العقود الذكية مبنية عليها هي اللامركزية. ما هو ضمان اي طرف عبر استخدام عقد ذكي مبني على نظام مركزي.

3. أحد أفضل الأنظمة التي توفر للعقود الذكية بيئة لامركزية هي سلسلة الأثيريوم. نظام الأثيريوم مبني على كود برمجي مفتوح المصدر يبث من شبكة لامركزية.

4. استخدام باحث اثرسكان لتفاعل مع عقد ذكي على سلسلة الأثيريوم.
4.1 بعد انشاء العقد الذكي واطلاقه على سلسلة الأثيريوم
4.2 الذهاب الى الباحث ثم وضع عنوان العقد الذكي وتعريفه
4.3 التفاعل مع العقد الذكي عن طريق محفظة ميتاماسك او اي محفظة تدعم ويب3.

5. اي ار سي -20: معايير تم وضعها لأنشاء الرموز. هذه المعايير تتكون من شروط ارسال الى اخره.
5.1 العقد الذكي لرموز اي ار سي -20: العقد الذكي لرموز يحتفظ بمعلومات رقمية وليست المحافظ التي تحتفظ بكمية الرموز وشروطها. يعني مثلاً محفظة خالد تحتوي على 100 رمز معناه ان العقد الذكي محتفظ بهذه المعلومة (الرصيد)
5.2 عند ارسالك رمز من محفظة الى محفظة اخرى انت تتفاعل مع العقد الذكي عن طريق المحفظة الموفرة لك. يتم ارسال رسالة للعقد الذكي ان (كمية) من الرمز يتم ارسالها من محفظة أ الى محفظة ب. هذه الرسائل يقبلها العقد الذكي وذلك بسبب وضع هذه الشروط في العقد الذكي عند انشائه.

6. العقود الإضافية للرموز هي عبارة عن عقود تحتوي على شروط إضافية على سبيل المثال انشاء رمز يحتوي على ميزة ايقاف جميع تحويلات الرمز، شرط حرق الرمز الى أخره.

7. عقود ذكية للمنصات اللامركزية، تحتفظ هذه العقود على عدة شروط منها تبادل بين طرفين اي طرف (أ) يتبادل مع طرف (ب) هذه الطريقة تتم عبر استخدام approve  اي شرط يتم وضعه في العقود الذكية للرموز (أحد شروط معايير اي ار سي- 20) يقوم الشخص بأرسال رسالة للعقد الذكي محتواها approve  بحيث يعطي الشخص عقد ذكي اخر بتحكم في الرمز الموجود في المحفظة. لذلك يجب قراءة كود العقد الذكي وفهمه قبل اعطاء اي منصة approve. المنصات التي تحتوي على عقد ذكي مثلاً (عقد ذكي للسرقة) يتم كشفها من قبل المبرمجين والمجتمع. وإذا كانت المنصة مشهورة تخضع لتدقيق أمنى من قبل بعض الخبراء في هذا المجال ((Security Audits

8. العقود الذكية لبيع العملات الرمزية، تتكون هذه العقود من شروط اضافية لتحصل عملية بيع الرمز.
مثال بسيط:
-بيع رمز اي ار سي -20 عند شراء شخص للرمز من عقد ذكي بائع للرمز، يرسل المشتري عملة أثيريوم وفي المقابل يحصل على الرمز.

مثال متقدم:
-بيع رمز اي ار سي – 20 مع الضمان للمشتري بحيث يرسل العقد الذكي الأثيريوم الى عقد اسكرو وفي نفس الوقت يرسل الرمز المباع الى اسكرو وتحتفظ عقود الأسكرو بالاثنان حتى تتم الشروط الموضوعة في عقد البيع، ممكن وضع وقت محدد وبعد انتهاء مدة البيع يتم ارسال الرمز والأثيريوم للبائع والمشتري، ممكن ايضاً وضع هدف معين لبيع الرمز (كمية محددة من الأثيريوم) حد ادنى وحد اقصى. في حال عدم الوصول للهدف يتم ارجاع الأثيريوم للمشتري ويتم ارجاع الرمز للبائع (مالك العقد الذكي) يتم استخدام الأسكرو في هذا النوع من البيع لتفادي هجوم من شخص نصاب، حيث يحصل على الرمز اثناء البيع ويقوم ببيع الرمز بسعر أرخص على اشخاص اخريين وفي حال عدم وصول هدف البيع يتم ارجاع عملة الأثيريوم له وفي نفس الوقت اخذ استثمار شخص اخر.

9. المترجم يعمل على ترجمة كود القعد الذكي المكتوب بلغة Solidity
الى كود تستقبله السلسلة.







10. قراءة عقد الرمز: كمثال سأستخدم عقد رمز كوينوبلكس









-Nameالأسم: كوينوبلكس (في هذا المثال)
-Supply Totalكمية الرموز الموجودة حالياً: 300 مليون رمز
-Decimalsفاصلة :18
-isPauser: التأكد ان كان العنوان لديه صلاحيه عمل توقيف التحويلات لرمز.
-Paused: False: هل حالياً الرموز جميعها متوقفة أي التحويلات في القعد الذكي متوقفة.
-balanceOf: : رصيد الرمز لعنوانً ما.
-Symbol الرمز: CPLX
-isMinter: التأكد ان كان العنوان لديه صلاحية إضافة رموز جديدة.
-allowance:- كمية الرصيد المصرح (الرموز)
Owner: العنوان المالك
Spender: العنوان الذي تم اعطاءه التصريح لإستخدام رصيد المالك.




10. التحدث مع عقد الرمز:












-Write contract connect to web3:- إيصال محفظة الويب 3 لتحدث مع العقد الذكي, محفظة ممتازة لهذا الغرض هي ميتاماسك MetaMask

-Approve:-  إعطاء تصريح لعنوان اخر بتحكم في رصيدك, هذه الميزة تستخدم كثيراً في المنصات الامركزية التي تعمل على عقود الأثيريوم الذكية حيث يتم إعطاء تصريح من عقد الرمز الى عقد المنصة.
Spender:  العنوان الذي تود اعطاءه التصريح لإستخدام رصيد المالك
Value: كمية الرصيد التي تود ان تعطي تصريح عليها.

-transferFrom:- تحويل الرصيد من محفظة أ الى محفظة ب.
From: العنوان الذي يحتوي على الرصيد
To: العنوان المستلم
Value: الكمية

-increaseAllowance:- زيادة كمية الرصيد المصرح مسبقاً, أي إعطاء المزيد من التصريح لعنوان تم اعطاءه التصريح مسبقاً.
Spender: عنوان مستخدم الرصيد الذي تم اعطاءه التصريح مسبقاً.
addedValue: كمية الرصيد المضاف لتصريح.

-Unpause:- تستخدم هذه الميزة لأنهاء تجميد التحويلات للرمز بعدما تم تجميد جميع التحويلات في العقد الذكي.

-Mint:- انشاء المزيد من الرمز ( إضافة المزيد من الرمز)
هذه الميزة يمكن استخدامها فقط عن طريق عنوان مالك العقد الذكي او في بعض الأحيان عنوان اخر تم تخصيصه لهذه الميزة كما هو موجود في الأسفل.
يمكنكم التجربة حيث ستحصلون علىError
Account: العنوان الذي سيحصل على الرموز المضافة.
Amount: كمية الرموز المضافة.

-Burn:- حرق الرمز, يتم ارسال في اغلب الأحيان الرموز المحروقة الى عنوان كمثال 0x00000000000000000000000000000 ومن ثم يسجل العقد هذه الحالة وبذلك تنقص الكمية الموجودة لرمز.
Amount: الكمية التي سيتم حرقها.

-renouncePauser:- الغاء صلاحية توقيف التحويلات للعنوان.

-burnFrom:- حرق الرموز من عنوان ما
Account: العنوان الذي سيتم الحرق منه.
Amount: الكمية التي سيتم حرقها.

-addPauser:- اضافة عنوان يحصل على صلاحية تجميد التحويلات في العقد.

-Pause:- توقيف التحويلات للرمز. هذه الميزة يمكن استخدامها فقط عن طريق عنوان مالك العقد الذكي او في بعض الأحيان عنوان اخر تم تخصيصه لهذه الميزة كما هو موجود في الأعلى.

-renounceMinter:- الغاء صلاحية انشاء الرمز للعنوان.

-decreaseAllowance:- تقليل كمية الرصيد المصرح مسبقاً, أي التقليل من التصريح لعنوان تم اعطاءه التصريح مسبقاً.
Spender: عنوان مستخدم الرصيد الذي تم اعطاءه التصريح مسبقاً.
substractedValue:- كمية إزالة الرصيد المصرح.

-transfer:- تحويل الرصيد (الرموز) الى عنوان اخر.
to: العنوان الذي سيتم تحويل الرموز له.
value: الكمية.






11. قراءة عقد قفل الرمز: كمثال سأستخدم عقد قفل رمز كوينوبلكس







-Beneficiary: العنوان الذي سيتم ارسال الرموز له بعد انتهاء مدة القفل.

-Cliff: الى أي مدة سيتم قفل الرموز. هذا الوقت يتم وضعه كوقت epoch time  الوقت الرقمي. بدء الوقت الرقمي في سنة 1970, الوقت محسوب بثواني منذ تلك السنة حتى اليوم، حالياً الوقت هو 1598556917, يمكنكم الإطلاع على الوقت الحالي عبر epochconverter.com

-Duration: المدة التي سيتم ارسال الرموز فيها من عقد القفل الى العنوان بعد فتح القفل هذه المدة محسوبة بثواني ايضاً.

-isOwner: هل العنوان الذي سيتم تحويل الرموز له هو نفس عنوان مالك العقد.

-Owner: عنوان مالك العقد.

-Released: عنوان عقد الرموز الذي تم تحويلها بحيث سيخرج لنا كمية الرمز الذي تم استخراجه من العقد لرمز معين.

-Revocable: قابل للإلغاء وأرجاع ما تبقى من الرموز الى مالك العقد.

-Revoked: التأكد ان تم الغاء القفل لرمز محدد وارجاع الرمز لمالك العقد, يجب وضع عنوان عقد الرمز 

-Start: الوقت الذي يبدأ فيه العقد.



11. التحدث مع عقد قفل الرمز: كمثال سأستخدم عقد قفل رمز كوينوبلكس 








-Release: تحويل الرمز الى عنوان الBeneficiary بعد انتهاء مدة القفل وبدء مدة التحويل, يجب وضع عنوان عقد الرمز.

-renounceOwnership: الغاء صلاحية عنوان المالك, يصبح العقد من غير مالك (الميزات المخصصة لمالك العقد تصبح غير صالحة).

-Revoke: الغاء القفل وارسال الرمز المتبقي الى مالك العقد, يجب وضع عنوان عقد الرمز.

-transferOwnership: تحويل صلاحية عنوان مالك العقد الى عنوان اخر جديد.








Jump to: