Blockchain: اسان کي ڇا PoC ٺاهڻ گهرجي؟

تنهنجون اکيون خوفزده آهن ۽ تنهنجي هٿن ۾ خارش آهي!

پوئين مضمونن ۾، اسان انهن ٽيڪنالاجين سان ڊيل ڪيو جن تي بلاڪچين ٺهيل آهن (ڇا اسان کي بلاڪ چين ٺاهڻ گهرجي؟۽ ڪيس جيڪي انهن جي مدد سان لاڳو ٿي سگهن ٿا (اسان کي ڪيس ڇو ٺاهڻ گهرجي؟). اهو توهان جي هٿن سان ڪم ڪرڻ جو وقت آهي! پائلٽس ۽ PoC (تصور جو ثبوت) تي عمل ڪرڻ لاءِ، مان بادل استعمال ڪرڻ کي ترجيح ڏيان ٿو، ڇاڪاڻ ته... انهن کي دنيا جي ڪنهن به هنڌ تان رسائي سگهجي ٿو ۽، اڪثر ڪري، ماحول جي سخت تنصيب تي وقت ضايع ڪرڻ جي ڪا ضرورت ناهي، ڇاڪاڻ ته اڳواٽ ترتيب ڏنل آهن. تنهن ڪري، اچو ته ڪجهه سادو ٺاهيو، مثال طور، شرڪت ڪندڙن جي وچ ۾ سکن جي منتقلي لاء هڪ نيٽ ورڪ ۽ اچو ته ان کي معمولي طور تي سڏين ٿا Bitcoin. ان لاءِ اسان استعمال ڪنداسين IBM ڪلائوڊ ۽ يونيورسل بلاڪچين هائپرليجر فيبرڪ. پهرين، اچو ته اهو سمجهون ته هائپرليجر فيبرڪ کي يونيورسل بلاڪچين ڇو سڏيو ويندو آهي؟

Blockchain: اسان کي ڇا PoC ٺاهڻ گهرجي؟

Hyperledger Fabric - هڪ عالمگير بلاڪچين

عام طور تي ڳالهائڻ، هڪ عالمگير معلومات سسٽم آهي:

  • سرور جو هڪ سيٽ ۽ هڪ سافٽ ويئر ڪور جيڪو ڪاروبار منطق انجام ڏئي ٿو؛
  • سسٽم سان رابطي لاء انٽرفيس؛
  • ڊوائيسز/ماڻهن جي رجسٽريشن، تصديق ۽ اختيار ڪرڻ جا اوزار؛
  • ڊيٽابيس اسٽوريج آپريشنل ۽ آرڪائيو ڊيٽا:

Blockchain: اسان کي ڇا PoC ٺاهڻ گهرجي؟

Hyperledger Fabric ڇا آهي جو سرڪاري نسخو پڙهي سگهجي ٿو сайте، ۽ مختصر ۾، Hyperledger Fabric ھڪڙو اوپن سورس پليٽ فارم آھي جيڪو توھان کي اجازت ڏئي ٿو پرائيويٽ بلاڪچينز ٺاھيو ۽ JS ۽ Go پروگرامنگ ٻولين ۾ لکيل ذھني سمارٽ معاھدن تي عمل ڪري. اچو ته تفصيل سان ڏسو Hyperledger Fabric جي فن تعمير ۽ پڪ ڪريو ته هي هڪ آفاقي نظام آهي جنهن ۾ صرف ڊيٽا کي محفوظ ڪرڻ ۽ رڪارڊ ڪرڻ جون خاصيتون آهن. خاصيت اها آهي ته ڊيٽا، جيئن سڀني بلاڪچين ۾، بلاڪ ۾ ذخيرو ٿيل آهي جيڪي بلاڪچين تي رکيل آهن صرف ان صورت ۾ جڏهن شرڪت ڪندڙ اتفاق راءِ تي پهچي وڃن ۽ ڊيٽا کي رڪارڊ ڪرڻ کان پوءِ خاموشي سان درست يا حذف نه ٿي ڪري سگهجي.

Hyperledger Fabric آرڪيٽيڪچر

ڊراگرام ڏيکاري ٿو Hyperledger Fabric architecture:

Blockchain: اسان کي ڇا PoC ٺاهڻ گهرجي؟

تنظيمون - تنظيمون ساٿين تي مشتمل آهن، يعني تنظيمن جي حمايت جي ڪري blockchain موجود آهي. مختلف تنظيمون هڪ ئي چينل جو حصو ٿي سگهن ٿيون.

چئنل - هڪ منطقي جوڙجڪ جيڪا ساٿين کي گروپن ۾ متحد ڪري ٿي، يعني. blockchain بيان ڪيو ويو آهي. Hyperledger Fabric هڪ ئي وقت ڪيترن ئي بلاڪچين تي عمل ڪري سگھي ٿو مختلف ڪاروباري منطق سان.

رڪنيت جون خدمتون فراهم ڪندڙ (MSP) سڃاڻپ جاري ڪرڻ ۽ ڪردار تفويض ڪرڻ لاءِ CA (سرٽيفڪيٽ اٿارٽي) آهي. هڪ نوڊ ٺاهڻ لاء، توهان کي MSP سان رابطو ڪرڻو پوندو.

پير نوڊس - ٽرانزيڪشن جي تصديق ڪريو، بلاڪچين کي ذخيرو ڪريو، سمارٽ معاهدن تي عمل ڪريو ۽ ايپليڪيشنن سان رابطو ڪريو. پيرن وٽ هڪ سڃاڻپ (ڊجيٽل سرٽيفڪيٽ) آهي، جيڪو MSP پاران جاري ڪيو ويندو آهي. Bitcoin يا Etherium نيٽ ورڪ جي برعڪس، جتي سڀني نوڊس جا برابر حق آهن، Hyperledger Fabric nodes ۾ مختلف ڪردار ادا ڪن ٿا:

  • پير صاحب شايد پير صاحب جي تصديق (EP) ۽ سمارٽ معاهدي تي عمل ڪريو.
  • عهديدار (CP) - صرف Blockchain ۾ ڊيٽا محفوظ ڪريو ۽ "ورلڊ اسٽيٽ" کي اپڊيٽ ڪريو.
  • اينڪر پير (اي پي) - جيڪڏهن ڪيتريون ئي تنظيمون بلاڪچين ۾ حصو وٺن ٿيون، پوء لنگر پيرس انهن جي وچ ۾ رابطي لاء استعمال ڪيا ويا آهن. هر تنظيم کي هڪ يا وڌيڪ لنگر پير هجڻ گهرجي. AP استعمال ڪندي، ڪنهن تنظيم ۾ ڪو به همراهه ٻين تنظيمن جي سڀني ساٿين بابت معلومات حاصل ڪري سگهي ٿو. APs جي وچ ۾ معلومات کي هم وقت سازي ڪرڻ لاء استعمال ڪيو ويو گپ شپ پروٽوڪول.
  • پير صاحب - جيڪڏهن هڪ تنظيم جا ڪيترائي ساٿي آهن، ته صرف پير صاحب جو اڳواڻ آرڊرنگ سروس کان بلاڪ وصول ڪندو ۽ انهن کي باقي ساٿين کي ڏيندو. اڳواڻ يا ته مقرر ڪري سگهجي ٿو جامد طور تي يا تنظيم ۾ ساٿين طرفان متحرڪ طور تي چونڊيو وڃي. گپ شپ پروٽوڪول پڻ استعمال ڪيو ويندو آهي اڳواڻن بابت معلومات کي هم وقت سازي ڪرڻ لاءِ.

قيمتون - ادارا جيڪي قدر آهن ۽ بلاڪ تي محفوظ ٿيل آهن. وڌيڪ خاص طور تي، هي JSON فارميٽ ۾ اهم-قيمتي ڊيٽا آهي. اها ڊيٽا آهي جيڪا Blockchain ۾ رڪارڊ ڪئي وئي آهي. انهن وٽ هڪ تاريخ آهي، جيڪا بلاڪچين ۾ محفوظ ڪئي وئي آهي، ۽ هڪ موجوده رياست، جيڪا "ورلڊ اسٽيٽ" ڊيٽابيس ۾ محفوظ ڪئي وئي آهي. ڪاروباري ڪمن جي لحاظ کان ڊيٽا جي جوڙجڪ خودمختياري سان ڀريل آهن. ڪو به گهربل فيلڊ نه آهي، صرف سفارش اها آهي ته اثاثن جو مالڪ هجڻ گهرجي ۽ قيمتي هجڻ گهرجي.

ليڊر - بلاڪچين ۽ لفظ اسٽيٽ ڊيٽابيس تي مشتمل آهي، جيڪو اثاثن جي موجوده حالت کي محفوظ ڪري ٿو. عالمي رياست استعمال ڪري ٿي LevelDB يا CouchDB.

اسمارٽ معاهدو - سمارٽ معاهدو استعمال ڪندي، سسٽم جو ڪاروباري منطق لاڳو ڪيو ويو آهي. Hyperledger Fabric ۾، سمارٽ معاهدن کي زنجير ڪوڊ سڏيو ويندو آهي. زنجير ڪوڊ استعمال ڪندي، اثاثن ۽ ٽرانزيڪشن انهن مٿان بيان ڪيا ويا آهن. ٽيڪنيڪل اصطلاحن ۾، سمارٽ معاهدو سافٽ ويئر ماڊلز آهن جيڪي JS يا Go پروگرامنگ ٻولين ۾ لاڳو ٿين ٿيون.

تصديق جي پاليسي - هر هڪ زنجير ڪوڊ لاءِ، توهان هڪ پاليسي مقرر ڪري سگهو ٿا ته ٽرانزيڪشن لاءِ ڪيترين تصديقن جي توقع ڪئي وڃي ۽ ڪنهن کان. جيڪڏهن پاليسي مقرر نه ڪئي وئي آهي، ته پوءِ ڊفالٽ آهي: "چينل ۾ ڪنهن به تنظيم جي ڪنهن به ميمبر طرفان ٽرانزيڪشن جي تصديق ٿيڻ گهرجي." پاليسين جا مثال:

  • ٽرانزيڪشن کي تنظيم جي ڪنهن به منتظم طرفان منظور ڪيو وڃي.
  • تنظيم جي ڪنهن به ميمبر يا ڪلائنٽ طرفان تصديق ٿيڻ گهرجي؛
  • ڪنهن به پير تنظيم طرفان تصديق ٿيڻ گهرجي.

آرڊر جي خدمت - ٽرانزيڪشن کي بلاڪ ۾ پيڪ ڪري ٿو ۽ انهن کي چينل ۾ ساٿين ڏانهن موڪلي ٿو. نيٽ ورڪ تي سڀني ساٿين کي پيغام پهچائڻ جي ضمانت. صنعتي نظام لاء استعمال ڪيو ڪافڪا پيغام بروکر، ترقي ۽ جاچ لاءِ ميرپور.

ڪال فلو

Blockchain: اسان کي ڇا PoC ٺاهڻ گهرجي؟

  • ايپليڪيشن Go, Node.js يا Java SDK استعمال ڪندي Hyperledger Fabric سان رابطو ڪري ٿي؛
  • ڪلائنٽ هڪ tx ٽرانزيڪشن ٺاهي ٿو ۽ ان کي موڪلي ٿو تصديق ڪندڙ ساٿين ڏانهن؛
  • پير صاحب ڪلائنٽ جي دستخط جي تصديق ڪري ٿو، ٽرانزيڪشن کي مڪمل ڪري ٿو، ۽ تصديق جي دستخط واپس ڪلائنٽ ڏانهن موڪلي ٿو. زنجير ڪوڊ صرف تصديق ڪندڙ پيرن تي عمل ڪيو ويندو آهي، ۽ ان جي عمل جو نتيجو سڀني ساٿين ڏانهن موڪليو ويندو آهي. ڪم جي هن الگورتھم کي PBFT (Practical Byzantine Fault Tolerant) اتفاق سڏيو ويندو آھي. کان مختلف آهي کلاسک BFT حقيقت اها آهي ته پيغام موڪليو ويو آهي ۽ تصديق جي توقع آهي سڀني شرڪت ڪندڙن کان، پر صرف هڪ خاص سيٽ کان؛
  • بعد ۾ ڪلائنٽ جوابن جو تعداد حاصل ڪري چڪو آهي جيڪو تصديق واري پاليسي سان لاڳاپيل آهي، هو ٽرانزيڪشن کي آرڊرنگ سروس ڏانهن موڪلي ٿو؛
  • آرڊرنگ سروس هڪ بلاڪ ٺاهي ٿو ۽ ان کي موڪلي ٿو سڀني ڪم ڪندڙ ساٿين کي. آرڊرنگ سروس بلاڪ جي ترتيب واري رڪارڊنگ کي يقيني بڻائي ٿي، جيڪا نام نهاد ليجر فورڪ کي ختم ڪري ٿي (ڏسو سيڪشن "فورڪس");
  • ساٿين کي هڪ بلاڪ ملي ٿو، تصديق واري پاليسي کي ٻيهر چيڪ ڪريو، بلاڪ کي بلاڪچين ڏانهن لکو ۽ رياست کي ”ورلڊ اسٽيٽ“ ڊي بي ۾ تبديل ڪريو.

اهي. اهو نتيجو نوڊس جي وچ ۾ ڪردار جي تقسيم ۾. هي يقيني بڻائي ٿو بلاڪچين اسپيبلبل ۽ محفوظ آهي:

  • سمارٽ معاهدو (چين ڪوڊ) انجام ڏيڻ وارن جي تصديق ڪن ٿا. هي سمارٽ معاهدي جي رازداري کي يقيني بڻائي ٿو، ڇاڪاڻ ته اهو سڀني شرڪت ڪندڙن طرفان محفوظ نه آهي، پر صرف ساٿين جي تصديق ڪندي.
  • آرڊر جلدي ڪم ڪرڻ گهرجي. انهي حقيقت کي يقيني بڻايو وڃي ٿو ته آرڊرنگ صرف هڪ بلاڪ ٺاهي ٿو ۽ ان کي ليڊر پيرن جي مقرر ڪيل سيٽ ڏانهن موڪلي ٿو.
  • ڪم ڪندڙ ساٿي صرف بلاڪچين کي ذخيرو ڪندا آهن - انهن مان ڪيترائي ٿي سگهن ٿا ۽ انهن کي تمام گهڻي طاقت ۽ فوري آپريشن جي ضرورت ناهي.

Hyperledger Fabric جي آرڪيٽيڪچرل حلن تي وڌيڪ تفصيل ۽ ڇو اهو هن طريقي سان ڪم ڪري ٿو ۽ ٻي صورت ۾ هتي ڳولي سگهجي ٿو: آرڪيٽيڪچر جي شروعات يا هتي: Hyperledger Fabric: اجازت ڏنل Blockchains لاءِ ورهايل آپريٽنگ سسٽم.

تنهن ڪري، Hyperledger Fabric واقعي هڪ آفاقي نظام آهي جنهن سان توهان ڪري سگهو ٿا:

  • سمارٽ ڪانٽريڪٽ ميکانيزم کي استعمال ڪندي صوابديدي ڪاروباري منطق کي لاڳو ڪريو؛
  • JSON فارميٽ ۾ بلاڪچين ڊيٽابيس مان ڊيٽا رڪارڊ ۽ وصول ڪريو؛
  • سرٽيفڪيٽ اٿارٽي استعمال ڪندي API رسائي جي تصديق ۽ تصديق ڪريو.

هاڻي ته اسان Hyperledger Fabric جي خاصيتن جي باري ۾ ٿورو سمجھندا آهيون، اچو ته آخرڪار ڪجهه مفيد ڪم ڪريون!

بلاڪچين کي ترتيب ڏيڻ

مسئلو جي ترتيب

Citcoin نيٽ ورڪ کي ھيٺ ڏنل ڪمن سان لاڳو ڪرڻ جو ڪم آھي: ھڪڙو کاتو ٺاھيو، بيلنس حاصل ڪريو، پنھنجي اڪائونٽ کي مٿي ڪريو، سڪن کي ھڪڙي اڪائونٽ کان ٻئي ڏانھن منتقل ڪريو. اچو ته هڪ اعتراض جو نمونو ٺاهيو، جنهن کي اسان هڪ سمارٽ معاهدي ۾ وڌيڪ لاڳو ڪنداسين. تنهن ڪري، اسان وٽ اڪائونٽ هوندا جيڪي نالن سان سڃاتل آهن ۽ هڪ بيلنس تي مشتمل آهي، ۽ اڪائونٽن جي هڪ فهرست. اڪائونٽس ۽ اڪائونٽن جي هڪ فهرست آهن، هائپر ليجر فيبرڪ اثاثن جي لحاظ کان. ان جي مطابق، انهن جي هڪ تاريخ ۽ موجوده رياست آهي. مان هن کي واضح ڪرڻ جي ڪوشش ڪندس:

Blockchain: اسان کي ڇا PoC ٺاهڻ گهرجي؟

مٿين انگن اکرن کي موجوده حالت آهي، جيڪا "ورلڊ اسٽيٽ" ڊيٽابيس ۾ محفوظ ڪئي وئي آهي. ھيٺ ڏنل انگ اکر آھن جيڪي تاريخ ڏيکاريندا آھن جيڪي بلاڪچين ۾ محفوظ ٿيل آھن. اثاثن جي موجوده حالت ٽرانزيڪشن ذريعي تبديل ٿي وئي آهي. اثاثو صرف مجموعي طور تبديل ٿئي ٿو، تنهنڪري ٽرانزيڪشن جي نتيجي ۾، هڪ نئون اعتراض پيدا ٿئي ٿو، ۽ اثاثن جي موجوده قيمت تاريخ ۾ وڃي ٿي.

IBM Cloud

اسان ان ۾ هڪ اڪائونٽ ٺاهيندا آهيون IBM بادل. بلاڪچين پليٽ فارم استعمال ڪرڻ لاءِ، ان کي اپڊيٽ ڪيو وڃي Pay-As-You-go. اهو عمل تيز نه ٿي سگهي ٿو، ڇاڪاڻ ته ... IBM اضافي معلومات جي درخواست ڪري ٿو ۽ ان کي دستي طور تي تصديق ڪري ٿو. هڪ مثبت نوٽ تي، مان چئي سگهان ٿو ته IBM وٽ سٺو تربيتي مواد آهي جيڪي توهان کي انهن جي بادل ۾ هائپرليجر فيبرڪ کي ترتيب ڏيڻ جي اجازت ڏين ٿا. مون کي مضمونن ۽ مثالن جو هيٺيون سلسلو پسند آيو:

هيٺ ڏنل اسڪرين شاٽ آهن IBM Blockchain پليٽ فارم. هي هڪ هدايت نه آهي ته هڪ بلاڪچين ڪيئن ٺاهيو، پر صرف ڪم جي دائري جو هڪ مظاهرو. تنهن ڪري، اسان جي مقصدن لاء، اسان هڪ تنظيم ٺاهيندا آهيون:

Blockchain: اسان کي ڇا PoC ٺاهڻ گهرجي؟

اسان ان ۾ نوڊس ٺاهيندا آهيون: Orderer CA، Org1 CA، Orderer Peer:

Blockchain: اسان کي ڇا PoC ٺاهڻ گهرجي؟

اسان صارف ٺاهي رهيا آهيون:

Blockchain: اسان کي ڇا PoC ٺاهڻ گهرجي؟

هڪ چينل ٺاهيو ۽ ان کي سڏيو citcoin:

Blockchain: اسان کي ڇا PoC ٺاهڻ گهرجي؟

لازمي طور تي چينل هڪ بلاڪچين آهي، تنهنڪري اهو بلاڪ صفر سان شروع ٿئي ٿو (پيدائش بلاڪ):

Blockchain: اسان کي ڇا PoC ٺاهڻ گهرجي؟

هڪ سمارٽ معاهدو لکڻ

/*
 * Citcoin smart-contract v1.5 for Hyperledger Fabric
 * (c) Alexey Sushkov, 2019
 */
 
'use strict';
 
const { Contract } = require('fabric-contract-api');
const maxAccounts = 5;
 
class CitcoinEvents extends Contract {
 
    async instantiate(ctx) {
        console.info('instantiate');
        let emptyList = [];
        await ctx.stub.putState('accounts', Buffer.from(JSON.stringify(emptyList)));
    }
    // Get all accounts
    async GetAccounts(ctx) {
        // Get account list:
        let accounts = '{}'
        let accountsData = await ctx.stub.getState('accounts');
        if (accountsData) {
            accounts = JSON.parse(accountsData.toString());
        } else {
            throw new Error('accounts not found');
        }
        return accountsData.toString()
    }
     // add a account object to the blockchain state identifited by their name
    async AddAccount(ctx, name, balance) {
        // this is account data:
        let account = {
            name: name,
            balance: Number(balance),       
            type: 'account',
        };
        // create account:
        await ctx.stub.putState(name, Buffer.from(JSON.stringify(account)));
 
        // Add account to list:
        let accountsData = await ctx.stub.getState('accounts');
        if (accountsData) {
            let accounts = JSON.parse(accountsData.toString());
            if (accounts.length < maxAccounts)
            {
                accounts.push(name);
                await ctx.stub.putState('accounts', Buffer.from(JSON.stringify(accounts)));
            } else {
                throw new Error('Max accounts number reached');
            }
        } else {
            throw new Error('accounts not found');
        }
        // return  object
        return JSON.stringify(account);
    }
    // Sends money from Account to Account
    async SendFrom(ctx, fromAccount, toAccount, value) {
        // get Account from
        let fromData = await ctx.stub.getState(fromAccount);
        let from;
        if (fromData) {
            from = JSON.parse(fromData.toString());
            if (from.type !== 'account') {
                throw new Error('wrong from type');
            }   
        } else {
            throw new Error('Accout from not found');
        }
        // get Account to
        let toData = await ctx.stub.getState(toAccount);
        let to;
        if (toData) {
            to = JSON.parse(toData.toString());
            if (to.type !== 'account') {
                throw new Error('wrong to type');
            }  
        } else {
            throw new Error('Accout to not found');
        }
 
        // update the balances
        if ((from.balance - Number(value)) >= 0 ) {
            from.balance -= Number(value);
            to.balance += Number(value);
        } else {
            throw new Error('From Account: not enought balance');          
        }
 
        await ctx.stub.putState(from.name, Buffer.from(JSON.stringify(from)));
        await ctx.stub.putState(to.name, Buffer.from(JSON.stringify(to)));
                 
        // define and set Event
        let Event = {
            type: "SendFrom",
            from: from.name,
            to: to.name,
            balanceFrom: from.balance,
            balanceTo: to.balance,
            value: value
        };
        await ctx.stub.setEvent('SendFrom', Buffer.from(JSON.stringify(Event)));
 
        // return to object
        return JSON.stringify(from);
    }
 
    // get the state from key
    async GetState(ctx, key) {
        let data = await ctx.stub.getState(key);
        let jsonData = JSON.parse(data.toString());
        return JSON.stringify(jsonData);
    }
    // GetBalance   
    async GetBalance(ctx, accountName) {
        let data = await ctx.stub.getState(accountName);
        let jsonData = JSON.parse(data.toString());
        return JSON.stringify(jsonData);
    }
     
    // Refill own balance
    async RefillBalance(ctx, toAccount, value) {
        // get Account to
        let toData = await ctx.stub.getState(toAccount);
        let to;
        if (toData) {
            to = JSON.parse(toData.toString());
            if (to.type !== 'account') {
                throw new Error('wrong to type');
            }  
        } else {
            throw new Error('Accout to not found');
        }
 
        // update the balance
        to.balance += Number(value);
        await ctx.stub.putState(to.name, Buffer.from(JSON.stringify(to)));
                 
        // define and set Event
        let Event = {
            type: "RefillBalance",
            to: to.name,
            balanceTo: to.balance,
            value: value
        };
        await ctx.stub.setEvent('RefillBalance', Buffer.from(JSON.stringify(Event)));
 
        // return to object
        return JSON.stringify(from);
    }
}
module.exports = CitcoinEvents;

وجداني طور تي، هتي هر شيء واضح هجڻ گهرجي:

  • اتي ڪيترائي فنڪشن آھن (AddAccount، GetAccounts، SendFrom، GetBalance، RefillBalance) جن کي ڊيمو پروگرام ھائيپرليجر فيبرڪ API استعمال ڪندي ڪال ڪندو.
  • SendFrom ۽ RefillBalance افعال پيدا ڪن ٿا واقعا جيڪي ڊيمو پروگرام وصول ڪندا.
  • فوري فنڪشن کي هڪ ڀيرو سڏيو ويندو آهي جڏهن هڪ سمارٽ معاهدو فوري طور تي ڪيو ويندو آهي. حقيقت ۾، اهو صرف هڪ ڀيرو نه سڏيو ويندو آهي، پر هر وقت سمارٽ معاهدو ورزن تبديل ٿي ويندو آهي. تنهن ڪري، هڪ خالي صف سان هڪ فهرست شروع ڪرڻ هڪ خراب خيال آهي، ڇاڪاڻ ته هاڻي، جڏهن اسان سمارٽ معاهدي جو نسخو تبديل ڪنداسين، اسان موجوده لسٽ کي وڃائي ڇڏينداسين. پر اهو ٺيڪ آهي، مان صرف سکي رهيو آهيان).
  • اڪائونٽس ۽ اڪائونٽس جي هڪ فهرست JSON ڊيٽا جي جوڙجڪ آهن. JS ڊيٽا جي استعمال لاء استعمال ڪيو ويندو آهي.
  • توهان حاصل ڪري سگهو ٿا هڪ اثاثن جي موجوده قيمت getState فنڪشن ڪال استعمال ڪندي، ۽ ان کي اپڊيٽ ڪري putState استعمال ڪندي.
  • جڏهن هڪ کاتو ٺاهيندي، AddAccount فنڪشن کي سڏيو ويندو آهي، جنهن ۾ بلاڪچين ۾ اڪائونٽن جي وڌ ۾ وڌ تعداد لاءِ مقابلو ڪيو ويندو آهي (maxAccounts = 5). ۽ هتي هڪ جام آهي (ڇا توهان محسوس ڪيو آهي؟)، جيڪو اڪائونٽن جي تعداد ۾ لامحدود اضافو ڪري ٿو. اهڙين غلطين کان پاسو ڪرڻ گهرجي)

اڳيون، اسان چينل ۾ سمارٽ معاهدو لوڊ ڪريون ٿا ۽ ان کي فوري طور تي:

Blockchain: اسان کي ڇا PoC ٺاهڻ گهرجي؟

اچو ته سمارٽ معاهدي کي نصب ڪرڻ لاء ٽرانزيڪشن کي ڏسو:

Blockchain: اسان کي ڇا PoC ٺاهڻ گهرجي؟

اچو ته اسان جي چينل بابت تفصيل ڏسو:

Blockchain: اسان کي ڇا PoC ٺاهڻ گهرجي؟

نتيجي طور، اسان IBM ڪلائوڊ ۾ بلاڪچين نيٽ ورڪ جو هيٺيون ڊراگرام حاصل ڪندا آهيون. ڊراگرام پڻ ڏيکاري ٿو هڪ ڊيمو پروگرام جيڪو Amazon ڪلائوڊ ۾ هلندڙ ورچوئل سرور تي (ان بابت وڌيڪ ايندڙ حصي ۾):

Blockchain: اسان کي ڇا PoC ٺاهڻ گهرجي؟

Hyperledger Fabric API ڪالن لاءِ GUI ٺاهڻ

Hyperledger Fabric وٽ ھڪڙو API آھي جنھن کي استعمال ڪري سگھجي ٿو:

  • چينل ٺاهيو؛
  • ڪنيڪشن پيئر کان چينل؛
  • چينل ۾ سمارٽ معاهدن جي تنصيب ۽ تڪميل؛
  • ڪالنگ ٽرانزيڪشن؛
  • Blockchain تي معلومات جي درخواست ڪريو.

ايپليڪيشن ڊولپمينٽ

اسان جي ڊيمو پروگرام ۾ اسان API استعمال ڪنداسين صرف ٽرانزيڪشن کي ڪال ڪرڻ ۽ معلومات جي درخواست ڪرڻ لاء، ڇاڪاڻ ته اسان اڳ ۾ ئي IBM blockchain پليٽ فارم استعمال ڪندي باقي قدم مڪمل ڪيو آهي. اسان هڪ معياري ٽيڪنالاجي اسٽيڪ استعمال ڪندي هڪ GUI لکندا آهيون: Express.js + Vue.js + Node.js. توهان هڪ الڳ مضمون لکي سگهو ٿا ته ڪيئن جديد ويب ايپليڪيشن ٺاهڻ شروع ڪجي. هتي آئون ليڪچرن جي سيريز جي هڪ لنڪ ڇڏيندس جيڪو مون تمام گهڻو پسند ڪيو: مڪمل اسٽيڪ ويب ايپ استعمال ڪندي Vue.js ۽ Express.js. نتيجو هڪ ڪلائنٽ-سرور ايپليڪيشن آهي جيڪو گوگل جي مادي ڊيزائن جي انداز ۾ هڪ واقف گرافڪ انٽرفيس سان آهي. ڪلائنٽ ۽ سرور جي وچ ۾ REST API ڪيترن ئي ڪالن تي مشتمل آهي:

  • HyperledgerDemo/v1/init - بلاڪچين کي شروع ڪريو؛
  • HyperledgerDemo/v1/accounts/list — حاصل ڪريو سڀني اڪائونٽن جي لسٽ؛
  • HyperledgerDemo/v1/account?name=Bob&balance=100 — ٺاهيو باب اڪائونٽ؛
  • HyperledgerDemo/v1/info?account=Bob — حاصل ڪريو باب اڪائونٽ بابت معلومات؛
  • HyperledgerDemo/v1/transaction?from=Bob&to=Alice&volume=2 — باب کان ايلس تائين ٻه سڪا منتقل ڪريو؛
  • HyperledgerDemo/v1/Disconnect - بند ڪريو ڪنيڪشن کي بلاڪ چين سان.

API جي وضاحت مثالن سان گڏ پوسٽمن ويب سائيٽ - HTTP API جي جاچ لاءِ هڪ مشهور پروگرام.

Amazon ڪلائوڊ ۾ ڊيمو ايپليڪيشن

مون ايپليڪيشن کي Amazon تي اپ لوڊ ڪيو ڇاڪاڻ ته ... IBM اڃا تائين منهنجي اڪائونٽ کي اپڊيٽ ڪرڻ جي قابل نه آهي ۽ مون کي مجازي سرور ٺاهڻ جي اجازت ڏني آهي. ڊومين ۾ چيري ڪيئن شامل ڪجي: www.citcoin.info. مان سرور کي ٿوري دير لاءِ آن رکندس، پوءِ ان کي بند ڪري ڇڏيندس، ڇاڪاڻ ته... cents for rent dripping آهن، ۽ citcoin coins اڃا تائين اسٽاڪ ايڪسچينج تي درج نه ٿيا آهن) مان آرٽيڪل ۾ ڊيمو جا اسڪرين شاٽ شامل ڪري رهيو آهيان ته جيئن ڪم جو منطق واضح ٿئي. ڊيمو ايپليڪيشن ڪري سگھي ٿو:

  • بلاڪچين کي شروع ڪريو؛
  • هڪ کاتو ٺاهيو (پر هاڻي توهان هڪ نئون کاتو ٺاهي نٿا سگهو، ڇاڪاڻ ته سمارٽ معاهدي ۾ بيان ڪيل اڪائونٽن جو وڌ ۾ وڌ تعداد بلاڪچين ۾ پهچي چڪو آهي)؛
  • اڪائونٽن جي هڪ فهرست حاصل ڪريو؛
  • ايلس، باب ۽ ايڪس جي وچ ۾ citcoin سکن کي منتقل ڪريو؛
  • واقعا وصول ڪريو (پر ھاڻي واقعن کي ڏيکارڻ جو ڪو طريقو نه آھي، تنھنڪري سادگي لاءِ، انٽرفيس چوي ٿو ته واقعا سپورٽ نه آھن)؛
  • لاگ عملن.

پهرين اسان بلاڪچين کي شروع ڪريون ٿا:

Blockchain: اسان کي ڇا PoC ٺاهڻ گهرجي؟

اڳيون، اسان پنهنجو اڪائونٽ ٺاهي، بيلنس سان وقت ضايع نه ڪريو:

Blockchain: اسان کي ڇا PoC ٺاهڻ گهرجي؟

اسان سڀني موجود اڪائونٽن جي هڪ فهرست حاصل ڪريون ٿا:

Blockchain: اسان کي ڇا PoC ٺاهڻ گهرجي؟

اسان موڪليندڙ ۽ وصول ڪندڙ کي چونڊيو، ۽ انهن جي بيلنس حاصل ڪريو. جيڪڏهن موڪليندڙ ۽ وصول ڪندڙ هڪجهڙا آهن، ته پوءِ هن جو اڪائونٽ ٻيهر ڀريو ويندو:

Blockchain: اسان کي ڇا PoC ٺاهڻ گهرجي؟

لاگ ۾ اسان ٽرانزيڪشن جي عمل جي نگراني ڪندا آهيون:

Blockchain: اسان کي ڇا PoC ٺاهڻ گهرجي؟

دراصل، اهو سڀ ڪجهه ڊيمو پروگرام سان آهي. هيٺ توهان ڏسي سگهو ٿا اسان جي ٽرانزيڪشن کي بلاڪچين ۾:

Blockchain: اسان کي ڇا PoC ٺاهڻ گهرجي؟

۽ ٽرانزيڪشن جي عام فهرست:

Blockchain: اسان کي ڇا PoC ٺاهڻ گهرجي؟

ان سان گڏ، اسان Citcoin نيٽ ورڪ ٺاهڻ لاءِ PoC جي عمل درآمد کي ڪاميابيءَ سان مڪمل ڪيو آهي. سڪن جي منتقلي لاءِ مڪمل نيٽ ورڪ بڻجڻ لاءِ Citcoin لاءِ ٻيو ڇا ڪرڻ جي ضرورت آهي؟ تمام ننڍڙو:

  • اڪائونٽ ٺاھڻ واري مرحلي تي، ھڪڙي خانگي / عوامي چاٻي جي نسل کي لاڳو ڪريو. خانگي چيڪ لازمي طور تي اڪائونٽ استعمال ڪندڙ وٽ محفوظ ڪيو وڃي، عوامي چيڪ کي بلاڪچين ۾ محفوظ ڪيو وڃي.
  • هڪ سکن جي منتقلي ٺاهيو جنهن ۾ هڪ عوامي ڪني، نالي جي بدران، استعمال ڪندڙ کي سڃاڻڻ لاء استعمال ڪيو ويندو آهي.
  • صارف کان سرور ڏانهن وڃڻ واري ٽرانزيڪشن کي انڪرپٽ ڪريو ان جي خانگي چيڪ سان.

ٿڪل

اسان Citcoin نيٽ ورڪ کي ھيٺين ڪمن سان لاڳو ڪيو آھي: ھڪڙو کاتو شامل ڪريو، بيلنس حاصل ڪريو، پنھنجو کاتو مٿي ڪريو، سڪن کي ھڪڙي اڪائونٽ کان ٻئي ۾ منتقل ڪريو. تنهن ڪري، اسان کي پي سي سي ٺاهڻ جي قيمت ڇا آهي؟

  • توھان کي پڙھڻ جي ضرورت آھي blockchain عام طور تي ۽ خاص طور تي Hyperledger Fabric؛
  • IBM يا Amazon بادل استعمال ڪرڻ سکو؛
  • سکو JS پروگرامنگ ٻولي ۽ ڪجهه ويب فريم ورڪ؛
  • جيڪڏهن ڪجهه ڊيٽا کي ذخيرو ڪرڻ جي ضرورت آهي بلاڪچين ۾ نه، پر هڪ الڳ ڊيٽابيس ۾، پوء ضم ڪرڻ سکو، مثال طور، PostgreSQL سان؛
  • ۽ آخري نه پر گهٽ ۾ گهٽ - توهان جديد دنيا ۾ لينڪس جي ڄاڻ کان سواء نٿا رهي سگهو!)

يقينا، اهو راڪيٽ سائنس ناهي، پر توهان کي محنت ڪرڻو پوندو!

GitHub تي ذريعن

ذريعن موجب GitHub. مخزن جي مختصر وضاحت:
فهرست »سرور»- Node.js سرور
فهرست »مختاران مائي»- Node.js ڪلائنٽ
فهرست »blockchain"(پيراميٽر ويلز ۽ ڪيچ، يقينا، غير ڪم ڪندڙ آهن ۽ صرف هڪ مثال طور ڏنل آهن):

  • معاهدو - سمارٽ معاهدي جو ذريعو ڪوڊ
  • والٽ - استعمال ڪندڙ ڪنجيون Hyperledger Fabric API استعمال ڪرڻ لاءِ.
  • *.cds - سمارٽ معاهدن جا مرتب ڪيل ورجن
  • *.json فائلون - Hyperledger Fabric API استعمال ڪرڻ لاءِ ڪنفيگريشن فائلن جا مثال

اها صرف شروعات آهي!

جو ذريعو: www.habr.com

تبصرو شامل ڪريو