بلاکچین: کوم PoC باید جوړ کړو؟

سترګې مو وېرېږي او لاسونه مو خارښ کوي!

په تیرو مقالو کې، موږ د ټیکنالوژیو سره معامله وکړه چې په کوم کې بلاکچینونه جوړ شوي (موږ څه باید یو بلاکچین جوړ کړو؟) او هغه قضیې چې د دوی په مرسته پلي کیدی شي (ولې موږ باید قضیه جوړه کړو؟). دا د خپلو لاسونو سره کار کولو وخت دی! د پیلوټانو او PoC (د مفهوم ثبوت) پلي کولو لپاره ، زه د بادلونو کارولو ته ترجیح ورکوم ، ځکه چې ... دوی د نړۍ له هر ځای څخه لاسرسی کیدی شي او ډیری وختونه د چاپیریال په ستړي کولو کې د وخت ضایع کولو ته اړتیا نلري، ځکه چې مخکې ترتیب شوي تشکیلات شتون لري. نو، راځئ چې یو څه ساده کړو، د بیلګې په توګه، د ګډون کونکو ترمنځ د سکې لیږد لپاره شبکه او راځئ چې په نرمۍ سره ورته Bitcoin ووایو. د دې لپاره به موږ د IBM کلاوډ او یونیورسل بلاکچین هایپرلیجر فابریک وکاروو. لومړی، راځئ چې معلومه کړو چې ولې هایپرلیجر فابریک یو نړیوال بلاکچین بلل کیږي؟

بلاکچین: کوم PoC باید جوړ کړو؟

هایپرلیجر فابریک - یو نړیوال بلاکچین

په عمومي توګه، د معلوماتو نړیوال سیسټم دی:

  • د سرورونو سیټ او د سافټویر کور چې د سوداګرۍ منطق ترسره کوي؛
  • د سیسټم سره د تعامل لپاره انٹرفیس؛
  • د وسیلو/خلکو د راجستریشن، تصدیق او واک ورکولو وسیلې؛
  • د ډیټابیس عملیاتي او آرشیف ډیټا ذخیره کول:

بلاکچین: کوم PoC باید جوړ کړو؟

د هایپرلیجر فابریک څه رسمي نسخه لوستل کیدی شي سایټ، او په لنډه توګه ، هایپرلیجر فیبریک د خلاصې سرچینې پلیټ فارم دی چې تاسو ته اجازه درکوي شخصي بلاکچینونه رامینځته کړئ او د JS او Go برنامې ژبو کې لیکل شوي خپل سري سمارټ قراردادونه اجرا کړئ. راځئ چې د Hyperledger Fabric جوړښت ته په تفصیل سره وګورو او ډاډ ترلاسه کړو چې دا یو نړیوال سیسټم دی چې یوازې د معلوماتو ذخیره کولو او ثبتولو لپاره ځانګړتیاوې لري. ځانګړتیا دا ده چې ډاټا، لکه څنګه چې په ټولو بلاکچینونو کې، په بلاکسونو کې ساتل کیږي چې یوازې په بلاکچین کې ځای پر ځای شوي وي که چیرې ګډون کونکي موافقې ته ورسیږي او د ثبت کولو وروسته ډاټا په خاموشۍ سره سم یا حذف نشي.

د هایپرلیجر پارچه آرکیټیکچر

ډیاګرام د هایپرلیجر فیبریک جوړښت ښیې:

بلاکچین: کوم PoC باید جوړ کړو؟

سازمانونه - سازمانونه ملګري لري، د بیلګې په توګه بلاکچین د سازمانونو د ملاتړ له امله شتون لري. مختلف سازمانونه د یو چینل برخه کیدی شي.

چینل - یو منطقي جوړښت چې ملګري په ډلو کې متحد کوي، د بیلګې په توګه. بلاکچین مشخص شوی. Hyperledger Fabric کولی شي په ورته وخت کې د مختلف سوداګرۍ منطق سره ډیری بلاکچینونه پروسس کړي.

د غړیتوب خدماتو چمتو کونکی (MSP) CA (د سندونو اداره) ده چې د هویت صادرولو او د رولونو ټاکلو لپاره. د نوډ رامینځته کولو لپاره ، تاسو اړتیا لرئ د MSP سره اړیکه ونیسئ.

د پیر نوډونه - لیږدونه تایید کړئ، بلاکچین ذخیره کړئ، سمارټ قراردادونه اجرا کړئ او د غوښتنلیکونو سره اړیکه ونیسئ. ملګري یو هویت لري (ډیجیټل سند) چې د MSP لخوا صادر شوی. د Bitcoin یا Etherium شبکې په څیر، چیرې چې ټول نوډونه مساوي حقونه لري، په Hyperledger فیبریک نوډونو کې مختلف رول لوبوي:

  • ملګری شاید ملاتړی ملګری (EP) او سمارټ قراردادونه اجرا کول.
  • ژمن ملګری (CP) - یوازې په بلاکچین کې ډاټا خوندي کړئ او "نړیوال حالت" تازه کړئ.
  • اینکر پیر (AP) - که څو سازمانونه په بلاکچین کې برخه واخلي، نو د لنگر ملګري د دوی ترمنځ د اړیکو لپاره کارول کیږي. هره اداره باید یو یا څو لنگر ملګري ولري. د AP په کارولو سره، په یوه سازمان کې هر ملګری کولی شي په نورو سازمانونو کې د ټولو همکارانو په اړه معلومات ترلاسه کړي. د APs ترمنځ د معلوماتو همغږي کولو لپاره کارول کیږي د ګپ شپ پروتوکول.
  • مشر پیر - که چیرې یو سازمان څو ملګري ولري، نو یوازې د ملګري مشر به د امر کولو خدمت څخه بلاکونه ترلاسه کړي او پاتې نورو ملګرو ته به یې ورکړي. مشر کیدای شي په سازمان کې د همکارانو لخوا یا په ثابت ډول مشخص شي یا په متحرک ډول وټاکل شي. د ګپ شپ پروتوکول د مشرانو په اړه د معلوماتو همغږي کولو لپاره هم کارول کیږي.

د جايدادونو د - هغه ادارې چې ارزښت لري او په بلاکچین کې زیرمه شوي. په ځانګړې توګه، دا د JSON بڼه کې د کلیدي ارزښت ډاټا ده. دا هغه معلومات دي چې په بلاکچین کې ثبت شوي. دوی یو تاریخ لري، کوم چې په بلاکچین کې زیرمه شوي، او اوسنی حالت، چې د "نړیوال دولت" ډیټابیس کې زیرمه شوی. د ډیټا جوړښتونه د سوداګرۍ دندو پورې اړه لري په خپله خوښه ډک شوي. هیڅ اړین ساحې شتون نلري، یوازینۍ سپارښتنه دا ده چې شتمنۍ باید یو مالک ولري او ارزښتناکه وي.

لیجر - د بلاکچین او ورډ ریاست ډیټابیس څخه جوړ دی، کوم چې د شتمنیو اوسنی حالت ذخیره کوي. د نړۍ دولت LevelDB یا CouchDB کاروي.

سمارټ تړون - د سمارټ قراردادونو په کارولو سره، د سیسټم سوداګریز منطق پلي کیږي. په Hyperledger Fabric کې، سمارټ قراردادونه د چین کوډ په نوم یادیږي. د چین کوډ کارول، شتمنۍ او د دوی په اړه لیږدونه مشخص شوي. په تخنیکي شرایطو کې، سمارټ قراردادونه د سافټویر ماډلونه دي چې په JS یا Go پروګرامینګ ژبو کې پلي کیږي.

د تایید پالیسي - د هر چینکوډ لپاره، تاسو کولی شئ یوه پالیسي جوړه کړئ چې د لیږد لپاره څومره تاییدات باید تمه شي او له چا څخه. که پالیسي نه وي ټاکل شوې، نو بیا ډیفالټ دا دی: "معامله باید په چینل کې د هرې ادارې د هر غړي لخوا تایید شي." د پالیسیو بیلګې:

  • معامله باید د سازمان د هر مدیر لخوا تصویب شي؛
  • باید د سازمان د هر غړي یا پیرودونکي لخوا تایید شي؛
  • باید د هر ملګري سازمان لخوا تایید شي.

د امر کولو خدمت - لیږدونه په بلاکونو کې بسته کوي او په چینل کې همکارانو ته یې لیږي. په شبکه کې ټولو همکارانو ته د پیغامونو رسولو تضمین کوي. د صنعتي سیسټمونو لپاره کارول کیږي د کافکا پیغام بروکرد پراختیا او ازموینې لپاره solo.

کال فلو

بلاکچین: کوم PoC باید جوړ کړو؟

  • غوښتنلیک د Go, Node.js یا Java SDK په کارولو سره د Hyperledger Fabric سره اړیکه نیسي؛
  • پیرودونکی د tx لیږد رامینځته کوي او ملاتړ کونکو ته یې لیږي؛
  • پیر د پیرودونکي لاسلیک تاییدوي، معامله بشپړوي، او د تایید لاسلیک بیرته پیرودونکي ته لیږي. چینکوډ یوازې د تایید کونکي ملګري باندې اجرا کیږي، او د هغې د اجرا کولو پایله ټولو همکارانو ته لیږل کیږي. د کار دا الګوریتم د PBFT (عملي بیزانتین غلط برداشت) توافق بلل کیږي. څخه توپیر لري کلاسیک BFT دا حقیقت چې پیغام لیږل شوی او تایید د ټولو ګډون کونکو څخه نه تمه کیږي ، مګر یوازې د یوې ټاکلې سیټ څخه؛
  • وروسته له دې چې پیرودونکي د تایید پالیسۍ سره سم ځوابونه ترلاسه کړي، هغه لیږد د امر کولو خدمت ته لیږي؛
  • د امر کولو خدمت یو بلاک رامینځته کوي او ټولو ژمنو همکارانو ته یې لیږي. د امر کولو خدمت د بلاکونو ترتیبي ثبت کول تضمینوي، کوم چې د لیجر فورک په نوم یادیږي (برخه "فورکس" وګورئ);
  • ملګري یو بلاک ترلاسه کوي ، د تایید پالیسي بیا چیک کړئ ، بلاک بلاک ته ولیکئ او حالت په "نړیوال حالت" DB کې بدل کړئ.

هغوی. دا د نوډونو ترمنځ د رولونو ویش پایله ده. دا ډاډ ورکوي چې بلاکچین د توزیع وړ او خوندي دی:

  • سمارټ قراردادونه (چینکوډ) د ملګرو ملاتړ کوي. دا د سمارټ قراردادونو محرمیت تضمینوي، ځکه دا د ټولو ګډون کوونکو لخوا نه زیرمه کیږي، مګر یوازې د ملګرو په تایید سره.
  • امر باید په چټکۍ سره کار وکړي. دا د دې حقیقت له مخې ډاډمن کیږي چې امر کول یوازې یو بلاک جوړوي او د مشر ملګرو یوې ټاکلې سیټ ته لیږي.
  • ژمن ملګري یوازې بلاکچین ذخیره کوي - ډیری یې شتون لري او دوی ډیر ځواک او فوري عملیاتو ته اړتیا نلري.

د هایپرلیجر فابریک د معماري حلونو په اړه نور توضیحات او ولې دا دا کار کوي او نه بل ډول دلته موندل کیدی شي: د معمارۍ اصل یا دلته: هایپرلیجر فیبریک: د اجازه ورکړل شوي بلاکچین لپاره توزیع شوی عملیاتي سیسټم.

نو، Hyperledger Fabric یو واقعی نړیوال سیسټم دی چې تاسو یې کولی شئ:

  • د سمارټ قرارداد میکانیزم په کارولو سره د خپلمنځي سوداګرۍ منطق پلي کول؛
  • په JSON بڼه کې د بلاکچین ډیټابیس څخه ډاټا ثبت او ترلاسه کړئ؛
  • د سند واک په کارولو سره API ته لاسرسی ورکړئ او تصدیق کړئ.

اوس چې موږ د هایپرلیجر فیبریک ځانګړتیاو په اړه لږ څه پوهیږو، راځئ چې په پای کې یو څه ګټور کار وکړو!

د بلاکچین ځای پرځای کول

د ستونزې تشکیل

دنده د لاندې دندو سره د Citcoin شبکه پلي کول دي: یو حساب جوړ کړئ، بیلانس ترلاسه کړئ، خپل حساب لوړ کړئ، سکې له یو حساب څخه بل حساب ته انتقال کړئ. راځئ چې د اعتراض ماډل رسم کړو، کوم چې موږ به نور په سمارټ قرارداد کې پلي کړو. نو، موږ به هغه حسابونه ولرو چې د نومونو لخوا پیژندل شوي او بیلانس لري، او د حسابونو لیست. حسابونه او د حسابونو لیست د Hyperledger Fabric شتمنیو په شرایطو کې دي. په دې اساس، دوی یو تاریخ او اوسنی حالت لري. زه به هڅه وکړم چې دا روښانه کړم:

بلاکچین: کوم PoC باید جوړ کړو؟

لوړ ارقام اوسنی حالت دی، کوم چې د "نړیوال دولت" ډیټابیس کې زیرمه شوي. د دوی لاندې ارقام دي چې تاریخ ښیې چې په بلاکچین کې زیرمه شوي. د شتمنیو اوسنی حالت د معاملو له لارې بدلیږي. شتمنۍ یوازې په بشپړ ډول بدلیږي، نو د لیږد په پایله کې، یو نوی اعتراض رامینځته کیږي، او د شتمنۍ اوسنی ارزښت تاریخ ته ځي.

IBM کلاوډ

موږ یو حساب جوړوو IBM بادل. د بلاکچین پلیټ فارم کارولو لپاره ، دا باید د تادیې په توګه - تاسو-ګو ته لوړ شي. دا پروسه ممکن چټکه نه وي، ځکه چې ... IBM د اضافي معلوماتو غوښتنه کوي او په لاسي ډول یې تاییدوي. په مثبت یادداشت کې ، زه کولی شم ووایم چې IBM ښه روزنیز توکي لري چې تاسو ته اجازه درکوي د دوی بادل کې هایپرلیجر فابریک ځای په ځای کړئ. ما د مقالو او مثالونو لاندې لړۍ خوښ کړه:

لاندې د IBM بلاکچین پلیټ فارم سکرین شاټونه دي. دا د بلاکچین رامینځته کولو څرنګوالي په اړه لارښوونه نه ده ، مګر په ساده ډول د دندې د ساحې څرګندونه. نو، زموږ د موخو لپاره، موږ یو سازمان جوړوو:

بلاکچین: کوم PoC باید جوړ کړو؟

موږ په دې کې نوډونه رامینځته کوو: Orderer CA، Org1 CA، Orderer Peer:

بلاکچین: کوم PoC باید جوړ کړو؟

موږ کاروونکي پیدا کوو:

بلاکچین: کوم PoC باید جوړ کړو؟

یو چینل جوړ کړئ او ورته citcoin ووایاست:

بلاکچین: کوم PoC باید جوړ کړو؟

په لازمي ډول چینل یو بلاکچین دی ، نو دا د بلاک صفر سره پیل کیږي (جینس بلاک):

بلاکچین: کوم 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) چې د ډیمو پروګرام به د Hyperledger Fabric API په کارولو سره زنګ ووهي.
  • د SendFrom او RefillBalance افعال هغه پیښې رامینځته کوي چې د ډیمو برنامه به ترلاسه کړي.
  • انسټیټیوټ فنکشن یوځل ویل کیږي کله چې یو سمارټ قرارداد فوري وي. په حقیقت کې، دا یوازې یو ځل نه ویل کیږي، مګر هر ځل د سمارټ قرارداد نسخه بدلیږي. له همدې امله، د خالي صف سره د لیست پیل کول یو بد نظر دی، ځکه اوس، کله چې موږ د سمارټ قرارداد نسخه بدل کړو، موږ به اوسنی لیست له لاسه ورکړو. مګر دا سمه ده، زه یوازې زده کوم).
  • حسابونه او د حسابونو لیست د JSON ډیټا جوړښتونه دي. JS د معلوماتو د مینځلو لپاره کارول کیږي.
  • تاسو کولی شئ د getState فنکشن کال په کارولو سره د شتمنۍ اوسنی ارزښت ترلاسه کړئ، او د putState په کارولو سره یې تازه کړئ.
  • کله چې یو حساب رامینځته کړئ ، د AddAccount فنکشن ویل کیږي ، په کوم کې چې په بلاکچین کې د حسابونو اعظمي شمیر لپاره پرتله کیږي (maxAccounts = 5). او دلته یو جام شتون لري (تاسو یادونه کړې؟)، کوم چې د حسابونو په شمیر کې د نه ختمیدونکي زیاتوالي لامل کیږي. له داسې تېروتنو باید ډډه وشي)

بیا، موږ سمارټ قرارداد په چینل کې بار کوو او دا یې ګړندۍ کوو:

بلاکچین: کوم PoC باید جوړ کړو؟

راځئ چې د سمارټ قرارداد نصبولو معامله وګورو:

بلاکچین: کوم PoC باید جوړ کړو؟

راځئ چې زموږ د چینل په اړه توضیحات وګورو:

بلاکچین: کوم PoC باید جوړ کړو؟

د پایلې په توګه، موږ د IBM کلاوډ کې د بلاکچین شبکې لاندې ډیاګرام ترلاسه کوو. ډیاګرام یو ډیمو برنامه هم ښیې چې په ایمیزون کلاوډ کې په مجازی سرور کې روان دی (د دې په اړه نور په راتلونکي برخه کې):

بلاکچین: کوم PoC باید جوړ کړو؟

د Hyperledger Fabric API کالونو لپاره د GUI جوړول

Hyperledger Fabric یو API لري چې د دې لپاره کارول کیدی شي:

  • چینل جوړ کړئ؛
  • د چینل سره نښلول؛
  • په چینل کې د سمارټ قراردادونو نصب او انسټیټیشن؛
  • د تلیفون لیږد؛
  • د بلاکچین په اړه د معلوماتو غوښتنه وکړئ.

د غوښتنلیک پراختیا

زموږ په ډیمو برنامه کې به موږ یوازې API وکاروو ترڅو د راکړې ورکړې غوښتنه وکړو او د معلوماتو غوښتنه وکړو، ځکه موږ لا دمخه د IBM بلاکچین پلیټ فارم په کارولو سره پاتې ګامونه بشپړ کړي دي. موږ د معیاري ټیکنالوژۍ سټیک په کارولو سره 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 ازموینې لپاره یو مشهور برنامه.

په ایمیزون کلاوډ کې د ډیمو غوښتنلیک

ما غوښتنلیک ایمیزون ته اپلوډ کړ ځکه چې ... IBM لاهم نه دی توانیدلی چې زما حساب ته وده ورکړي او ما ته اجازه راکړئ چې مجازی سرورونه رامینځته کړم. په ډومین کې د چیری اضافه کولو څرنګوالی: www.citcoin.info. زه به سرور د یو څه وخت لپاره ساتم، بیا به یې بند کړم، ځکه چې ... د کرایې لپاره سینټ ډراپ کیږي، او د citcoin سکې لاهم په سټاک ایکسچینج کې لیست شوي ندي) زه په مقاله کې د ډیمو سکرین شاټونه شاملوم ترڅو د کار منطق روښانه وي. د ډیمو غوښتنلیک کولی شي:

  • بلاکچین پیل کړئ؛
  • یو حساب جوړ کړئ (مګر اوس تاسو نشئ کولی نوی حساب رامینځته کړئ ، ځکه چې په سمارټ قرارداد کې مشخص شوي حسابونو اعظمي شمیر په بلاکچین کې رسیدلی دی)؛
  • د حسابونو لیست ترلاسه کړئ؛
  • د الیس، باب او الیکس ترمنځ د citcoin سکې لیږدول؛
  • پیښې ترلاسه کړئ (مګر اوس د پیښو ښودلو لپاره کومه لاره نشته ، نو د سادگي لپاره ، انٹرفیس وايي چې پیښې نه ملاتړ کیږي)؛
  • د کړنو ثبتول.

لومړی موږ بلاکچین پیل کوو:

بلاکچین: کوم PoC باید جوړ کړو؟

بیا، موږ خپل حساب جوړوو، د توازن سره وخت مه ضایع کوئ:

بلاکچین: کوم PoC باید جوړ کړو؟

موږ د ټولو شته حسابونو لیست ترلاسه کوو:

بلاکچین: کوم PoC باید جوړ کړو؟

موږ لیږونکی او ترلاسه کونکی غوره کوو، او د دوی بیلانس ترلاسه کوو. که لیږونکی او اخیستونکی یو شان وي، نو د هغه حساب به ډک شي:

بلاکچین: کوم PoC باید جوړ کړو؟

په لاګ کې موږ د معاملو اجرا کول څارو:

بلاکچین: کوم PoC باید جوړ کړو؟

په حقیقت کې، دا ټول د ډیمو پروګرام سره دي. لاندې تاسو کولی شئ زموږ لیږد په بلاکچین کې وګورئ:

بلاکچین: کوم PoC باید جوړ کړو؟

او د معاملو عمومي لیست:

بلاکچین: کوم PoC باید جوړ کړو؟

له دې سره، موږ په بریالیتوب سره د PoC پلي کول د Citcoin شبکې جوړولو لپاره بشپړ کړل. د سکې لیږدولو لپاره د بشپړ شبکې کیدو لپاره د Citcoin لپاره نور څه کولو ته اړتیا ده؟ ډېر کم:

  • د حساب جوړولو په مرحله کې، د شخصي / عامه کیلي تولید پلي کړئ. شخصي کیلي باید د حساب کارونکي سره زیرمه شي ، عامه کیلي باید په بلاکچین کې زیرمه شي.
  • د سکې لیږد رامینځته کړئ په کوم کې چې د نوم پرځای عامه کیلي د کارونکي پیژندلو لپاره کارول کیږي.
  • د هغه شخصي کیلي سره د کارونکي څخه سرور ته لیږدونکي کوډ کړئ.

پایلې

موږ د Citcoin شبکه د لاندې دندو سره پلي کړې: یو حساب اضافه کړئ، بیلانس ترلاسه کړئ، خپل حساب لوړ کړئ، له یو حساب څخه بل حساب ته سکې انتقال کړئ. نو، د PoC جوړولو لپاره موږ څه لګښت وکړ؟

  • تاسو اړتیا لرئ په عمومي ډول د بلاکچین مطالعه وکړئ او په ځانګړي توګه هایپرلیجر فابریک؛
  • د IBM یا ایمیزون بادلونو کارول زده کړئ؛
  • د JS پروګرام کولو ژبه او ځینې ویب چوکاټ زده کړئ؛
  • که ځینې معلومات باید په بلاکچین کې نه ذخیره شي، مګر په جلا ډیټابیس کې، نو بیا یوځای کول زده کړئ، د بیلګې په توګه، د PostgreSQL سره؛
  • او وروستی مګر لږترلږه - تاسو نشئ کولی په عصري نړۍ کې د لینکس د پوهې پرته ژوند وکړئ!)

البته، دا د راکټ ساینس نه دی، مګر تاسو باید سخت کار وکړئ!

په GitHub کې سرچینې

سرچینې په ډاګه کړې GitHub. د ذخیره کولو لنډه توضیحات:
کتلاګ «سرور» — Node.js سرور
کتلاګ «د مراجعینو» — د Node.js پیرودونکي
کتلاګ «blockchain"(د پیرامیټر ارزښتونه او کیلي، البته، غیر کار کوي او یوازې د مثال په توګه ورکول کیږي):

  • قرارداد - د سمارټ قرارداد سرچینې کوډ
  • والټ - د Hyperledger Fabric API کارولو لپاره د کارونکي کیلي.
  • *.cds - د سمارټ قراردادونو تالیف شوي نسخې
  • *.json فایلونه - د Hyperledger Fabric API کارولو لپاره د ترتیب کولو فایلونو مثالونه

دا یوازې پیل دی!

سرچینه: www.habr.com

Add a comment