рддреБрдордЪреЗ рдбреЛрд│реЗ рдШрд╛рдмрд░рд▓реЗ рдЖрд╣реЗрдд рдЖрдгрд┐ рддреБрдордЪреЗ рд╣рд╛рдд рдЦрд╛рдЬрдд рдЖрд╣реЗрдд!
рдорд╛рдЧреАрд▓ рд▓реЗрдЦрд╛рдВрдордзреНрдпреЗ, рдЖрдореНрд╣реА рдЬреНрдпрд╛ рддрдВрддреНрд░рдЬреНрдЮрд╛рдирд╛рд╡рд░ рдмреНрд▓реЙрдХрдЪреЗрди рдмрд╛рдВрдзрд▓реЗ рдЬрд╛рддрд╛рдд рддреНрдпрд╛рдмрд╛рдмрдд рдЪрд░реНрдЪрд╛ рдХреЗрд▓реА (
рд╣рд╛рдпрдкрд░рд▓реЗрдЬрд░ рдлреЕрдмреНрд░рд┐рдХ - рдПрдХ рд╕рд╛рд░реНрд╡рддреНрд░рд┐рдХ рдмреНрд▓реЙрдХрдЪреЗрди
рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдПрдХ рд╕рд╛рд░реНрд╡рддреНрд░рд┐рдХ рдорд╛рд╣рд┐рддреА рдкреНрд░рдгрд╛рд▓реА рдЖрд╣реЗ:
- рд╕рд░реНрд╡реНрд╣рд░рдЪрд╛ рдПрдХ рд╕рдВрдЪ рдЖрдгрд┐ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдХреЛрд░ рдЬреЛ рд╡реНрдпрд╡рд╕рд╛рдп рддрд░реНрдХ рдХрд░рддреЛ;
- рд╕рд┐рд╕реНрдЯрдорд╕рд╣ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджрд╛рд╕рд╛рдареА рдЗрдВрдЯрд░рдлреЗрд╕;
- рдЙрдкрдХрд░рдгреЗ/рд▓реЛрдХрд╛рдВрдЪреА рдиреЛрдВрджрдгреА, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЖрдгрд┐ рдЕрдзрд┐рдХреГрддрддрд╛ рдпрд╛рд╕рд╛рдареА рд╕рд╛рдзрдиреЗ;
- рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдкрд░реЗрд╢рдирд▓ рдЖрдгрд┐ рдЖрд░реНрдХрд╛рдЗрд╡реНрд╣рд▓ рдбреЗрдЯрд╛ рд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреЗ:
рд╣рд╛рдпрдкрд░рд▓реЗрдЬрд░ рдлреЕрдмреНрд░рд┐рдХ рдХрд╛рдп рдЖрд╣реЗ рдпрд╛рдЪреА рдЕрдзрд┐рдХреГрдд рдЖрд╡реГрддреНрддреА рдпреЗрдереЗ рд╡рд╛рдЪрд▓реА рдЬрд╛рдК рд╢рдХрддреЗ
рд╣рд╛рдпрдкрд░рд▓реЗрдЬрд░ рдлреЕрдмреНрд░рд┐рдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░
рдЖрдХреГрддреА рд╣рд╛рдпрдкрд░рд▓реЗрдЬрд░ рдлреЕрдмреНрд░рд┐рдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рджрд░реНрд╢рд╡рддреЗ:
рд╕рдВрдШрдЯрдирд╛ тАФ рд╕рдВрд╕реНрдерд╛рдВрдордзреНрдпреЗ рд╕рдорд╡рдпрд╕реНрдХ рдЕрд╕рддрд╛рдд, рдЙрджрд╛. рд╕рдВрд╕реНрдерд╛рдВрдЪреНрдпрд╛ рд╕рдорд░реНрдердирд╛рдореБрд│реЗ рдмреНрд▓реЙрдХрдЪреЗрди рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЖрд╣реЗ. рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рд╕рдВрд╕реНрдерд╛ рдПрдХрд╛рдЪ рдЪреЕрдиреЗрд▓рдЪрд╛ рднрд╛рдЧ рдЕрд╕реВ рд╢рдХрддрд╛рдд.
рдЪреЕрдиреЗрд▓ - рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рд░рдЪрдирд╛ рдЬреА рд╕рдорд╡рдпрд╕реНрдХрд╛рдВрдирд╛ рдЧрдЯрд╛рдВрдордзреНрдпреЗ рдПрдХрддреНрд░ рдХрд░рддреЗ, рдЙрджрд╛. рдмреНрд▓реЙрдХрдЪреЗрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдЖрд╣реЗ. рд╣рд╛рдпрдкрд░рд▓реЗрдЬрд░ рдлреЕрдмреНрд░рд┐рдХ рдПрдХрд╛рдЪ рд╡реЗрд│реА рд╡рд┐рд╡рд┐рдз рд╡реНрдпрд╡рд╕рд╛рдп рддрд░реНрдХрд╛рд╕рд╣ рдЕрдиреЗрдХ рдмреНрд▓реЙрдХрдЪреЗрдирд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реВ рд╢рдХрддреЗ.
рд╕рджрд╕реНрдпрддрд╛ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рддрд╛ (MSP) рдУрд│рдЦ рдЬрд╛рд░реА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рднреВрдорд┐рдХрд╛ рдирд┐рдпреБрдХреНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА CA (рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг) рдЖрд╣реЗ. рдиреЛрдб рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ MSP рд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ.
рдкреАрдЕрд░ рдиреЛрдбреНрд╕ - рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рд╛, рдмреНрд▓реЙрдХрдЪреЗрди рд╕рдВрдЪрдпрд┐рдд рдХрд░рд╛, рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рд╛ рдЖрдгрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрд╛. рд╕рдорд╡рдпрд╕реНрдХрд╛рдВрдЪреА рдУрд│рдЦ (рдбрд┐рдЬрд┐рдЯрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░) рдЕрд╕рддреЗ, рдЬреА MSP рджреНрд╡рд╛рд░реЗ рдЬрд╛рд░реА рдХреЗрд▓реА рдЬрд╛рддреЗ. рдмрд┐рдЯрдХреЙрдЗрди рдХрд┐рдВрд╡рд╛ рдЗрдерд░рд┐рдпрдо рдиреЗрдЯрд╡рд░реНрдХрдЪреНрдпрд╛ рд╡рд┐рдкрд░реАрдд, рдЬрд┐рдереЗ рд╕рд░реНрд╡ рдиреЛрдбреНрд╕рдирд╛ рд╕рдорд╛рди рдЕрдзрд┐рдХрд╛рд░ рдЖрд╣реЗрдд, рд╣рд╛рдпрдкрд░рд▓реЗрдЬрд░рдордзреНрдпреЗ рдлреЕрдмреНрд░рд┐рдХ рдиреЛрдбреНрд╕ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рднреВрдорд┐рдХрд╛ рдмрдЬрд╛рд╡рддрд╛рдд:
- рд╕рд░рджрд╛рд░ рдХрджрд╛рдЪрд┐рдд рд╕рдорд╡рдпрд╕реНрдХ рд╕рдорд░реНрдерди (EP) рдЖрдгрд┐ рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░ рдЕрдВрдорд▓рд╛рдд рдЖрдгрд╛.
- рд╡рдЪрдирдмрджреНрдз рд╕рдорд╡рдпрд╕реНрдХ (CP) - рдлрдХреНрдд рдмреНрд▓реЙрдХрдЪреЗрдирдордзреНрдпреЗ рдбреЗрдЯрд╛ рдЬрддрди рдХрд░рд╛ рдЖрдгрд┐ тАЬрд╡рд░реНрд▓реНрдб рд╕реНрдЯреЗрдЯтАЭ рдЕрдкрдбреЗрдЯ рдХрд░рд╛.
- рдЕрдБрдХрд░ рдкреАрд░ (рдПрдкреА) - рдЬрд░ рдЕрдиреЗрдХ рд╕рдВрд╕реНрдерд╛ рдмреНрд▓реЙрдХрдЪреЗрдирдордзреНрдпреЗ рднрд╛рдЧ рдШреЗрддрд╛рдд, рддрд░ рддреНрдпрд╛рдВрдЪреНрдпрд╛рддреАрд▓ рд╕рдВрд╡рд╛рджрд╛рд╕рд╛рдареА рдЕрдБрдХрд░ рдкреАрдЕрд░реНрд╕рдЪрд╛ рд╡рд╛рдкрд░ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕реНрдереЗрдордзреНрдпреЗ рдПрдХ рдХрд┐рдВрд╡рд╛ рдЕрдзрд┐рдХ рдЕрдБрдХрд░ рдкреАрдЕрд░ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. AP рд╡рд╛рдкрд░реВрди, рд╕рдВрд╕реНрдереЗрддреАрд▓ рдХреЛрдгрддрд╛рд╣реА рд╕рдорд╡рдпрд╕реНрдХ рдЗрддрд░ рд╕рдВрд╕реНрдерд╛рдВрдордзреАрд▓ рд╕рд░реНрд╡ рд╕рдорд╡рдпрд╕реНрдХрд╛рдВрдЪреА рдорд╛рд╣рд┐рддреА рдорд┐рд│рд╡реВ рд╢рдХрддреЛ. AP рджрд░рдореНрдпрд╛рди рдорд╛рд╣рд┐рддреА рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЭ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ
рдЧрдкрд╢рдк рдкреНрд░реЛрдЯреЛрдХреЙрд▓ . - рдкреБрдврд╛рд░реА рдкреАрд░ - рдЬрд░ рдПрдЦрд╛рджреНрдпрд╛ рд╕рдВрд╕реНрдереЗрдХрдбреЗ рдЕрдиреЗрдХ рд╕рдорд╡рдпрд╕реНрдХ рдЕрд╕рддреАрд▓, рддрд░ рдХреЗрд╡рд│ рд╕рдорд╡рдпрд╕реНрдХрд╛рдВрдЪреНрдпрд╛ рдиреЗрддреНрдпрд╛рд▓рд╛ рдСрд░реНрдбрд░рд┐рдВрдЧ рд╕реЗрд╡реЗрдХрдбреВрди рдмреНрд▓реЙрдХреНрд╕ рдорд┐рд│рддреАрд▓ рдЖрдгрд┐ рддреЗ рдЙрд░реНрд╡рд░рд┐рдд рд╕рдорд╡рдпрд╕реНрдХрд╛рдВрдирд╛ рджреЗрддреАрд▓. рдиреЗрддрд╛ рдПрдХрддрд░ рд╕реНрдерд┐рд░рдкрдгреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ рдХрд┐рдВрд╡рд╛ рд╕рдВрд╕реНрдереЗрддреАрд▓ рд╕рдорд╡рдпрд╕реНрдХрд╛рдВрдХрдбреВрди рдЧрддрд┐рд╢реАрд▓рдкрдгреЗ рдирд┐рд╡рдбрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ. рдЧреЙрд╕рд┐рдк рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪрд╛ рд╡рд╛рдкрд░ рдиреЗрддреНрдпрд╛рдВрдЪреА рдорд╛рд╣рд┐рддреА рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЭ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рджреЗрдЦреАрд▓ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ.
рдорд╛рд▓рдорддреНрддрд╛ тАФ рдЬреНрдпрд╛рдВрдЪреЗ рдореВрд▓реНрдп рдЖрд╣реЗ рдЖрдгрд┐ рдмреНрд▓реЙрдХрдЪреЗрдирд╡рд░ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдЖрд╣реЗрдд. рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНтАНрдЯрдкрдгреЗ, рд╣рд╛ JSON рдлреЙрд░рдореЕрдЯрдордзреНтАНрдпреЗ рдХреА-рд╡реНрд╣реЕрд▓реНрдпреВ рдбреЗрдЯрд╛ рдЖрд╣реЗ. рд╣рд╛ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХрдЪреЗрдирдордзреНрдпреЗ рд░реЗрдХреЙрд░реНрдб рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рддреНрдпрд╛рдВрдЪреНрдпрд╛рдХрдбреЗ рдПрдХ рдЗрддрд┐рд╣рд╛рд╕ рдЖрд╣реЗ, рдЬреЛ рдмреНрд▓реЙрдХрдЪреЗрдирдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдЖрд╣реЗ рдЖрдгрд┐ рд╕рджреНрдп рд╕реНрдерд┐рддреА рдЖрд╣реЗ, рдЬреЛ тАЬрд╡рд░реНрд▓реНрдб рд╕реНрдЯреЗрдЯтАЭ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдЖрд╣реЗ. рд╡реНрдпрд╡рд╕рд╛рдп рдХрд╛рд░реНрдпрд╛рдВрд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдЕрдирд┐рдпрдВрддреНрд░рд┐рддрдкрдгреЗ рднрд░рд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд. рдХреЛрдгрддреЗрд╣реА рдЖрд╡рд╢реНрдпрдХ рдлреАрд▓реНрдб рдирд╛рд╣реАрдд, рдлрдХреНрдд рд╢рд┐рдлрд╛рд░рд╕ рдЕрд╢реА рдЖрд╣реЗ рдХреА рдорд╛рд▓рдорддреНрддреЗрдЪрд╛ рдорд╛рд▓рдХ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЖрдгрд┐ рддреЗ рдореМрд▓реНрдпрд╡рд╛рди рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
рд▓реЗрдЬрд░ тАФ рдмреНрд▓реЙрдХрдЪреЗрди рдЖрдгрд┐ рд╡рд░реНрдб рд╕реНрдЯреЗрдЯ рдбреЗрдЯрд╛рдмреЗрд╕рдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ, рдЬреЛ рдорд╛рд▓рдорддреНрддреЗрдЪреА рд╕рджреНрдпрд╕реНрдерд┐рддреА рд╕рд╛рдард╡рддреЛ. рдЬрд╛рдЧрддрд┐рдХ рд░рд╛рдЬреНрдп LevelDB рдХрд┐рдВрд╡рд╛ CouchDB рд╡рд╛рдкрд░рддреЗ.
рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░ тАФ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯреНрд╕ рд╡рд╛рдкрд░реВрди, рд╕рд┐рд╕реНрдЯрдордЪреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рд╣рд╛рдпрдкрд░рд▓реЗрдЬрд░ рдлреЕрдмреНрд░рд┐рдХрдордзреНрдпреЗ, рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯрд▓рд╛ рдЪреЗрдирдХреЛрдб рдореНрд╣рдгрддрд╛рдд. рдЪреЗрдирдХреЛрдб рд╡рд╛рдкрд░реВрди, рдорд╛рд▓рдорддреНрддрд╛ рдЖрдгрд┐ рддреНрдпрд╛рд╡рд░реАрд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдЖрд╣реЗрдд. рддрд╛рдВрддреНрд░рд┐рдХ рднрд╛рд╖реЗрдд, рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯреНрд╕ рд╣реЗ рдЬреЗрдПрд╕ рдХрд┐рдВрд╡рд╛ рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдВрдордзреНрдпреЗ рд▓рд╛рдЧреВ рдХреЗрд▓реЗрд▓реЗ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдореЙрдбреНрдпреВрд▓ рдЖрд╣реЗрдд.
рд╕рдорд░реНрдерди рдзреЛрд░рдг тАФ рдкреНрд░рддреНрдпреЗрдХ рдЪреЗрдирдХреЛрдбрд╕рд╛рдареА, рд╡реНрдпрд╡рд╣рд╛рд░рд╛рд╕рд╛рдареА рдХрд┐рддреА рдкреБрд╖реНрдЯреАрдХрд░рдгреЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрд╣реЗрдд рдЖрдгрд┐ рдХреЛрдгрд╛рдХрдбреВрди рдпрд╛рд╡рд┐рд╖рдпреА рддреБрдореНрд╣реА рдзреЛрд░рдг рд╕реЗрдЯ рдХрд░реВ рд╢рдХрддрд╛. рдзреЛрд░рдг рд╕реЗрдЯ рдХреЗрд▓реЗ рдирд╕рд▓реНрдпрд╛рд╕, рдбреАрдлреЙрд▓реНрдЯ рдЕрд╕реЗ рдЖрд╣реЗ: "рдЪреЕрдиреЗрд▓рдордзреАрд▓ рдХреЛрдгрддреНрдпрд╛рд╣реА рд╕рдВрд╕реНрдереЗрдЪреНрдпрд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рд╕рджрд╕реНрдпрд╛рджреНрд╡рд╛рд░реЗ рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдЪреА рдкреБрд╖реНрдЯреА рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ." рдзреЛрд░рдгрд╛рдВрдЪреА рдЙрджрд╛рд╣рд░рдгреЗ:
- рд╡реНрдпрд╡рд╣рд╛рд░рд╛рд╕ рд╕рдВрд╕реНрдереЗрдЪреНрдпрд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рдкреНрд░рд╢рд╛рд╕рдХрд╛рдиреЗ рдорд╛рдиреНрдпрддрд╛ рджрд┐рд▓реА рдкрд╛рд╣рд┐рдЬреЗ;
- рд╕рдВрд╕реНрдереЗрдЪреНрдпрд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рд╕рджрд╕реНрдп рдХрд┐рдВрд╡рд╛ рдХреНрд▓рд╛рдпрдВрдЯрджреНрд╡рд╛рд░реЗ рдкреБрд╖реНрдЯреА рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ;
- рдХреЛрдгрддреНрдпрд╛рд╣реА рд╕рдорд╡рдпрд╕реНрдХ рд╕рдВрд╕реНрдереЗрджреНрд╡рд╛рд░реЗ рдкреБрд╖реНрдЯреА рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
рдСрд░реНрдбрд░ рд╕реЗрд╡рд╛ тАФ рд╡реНрдпрд╡рд╣рд╛рд░ рдмреНрд▓реЙрдХрдордзреНрдпреЗ рдкреЕрдХ рдХрд░рддреЗ рдЖрдгрд┐ рдЪреЕрдиреЗрд▓рдордзреАрд▓ рд╕рдорд╡рдпрд╕реНрдХрд╛рдВрдирд╛ рдкрд╛рдард╡рддреЗ. рдиреЗрдЯрд╡рд░реНрдХрд╡рд░реАрд▓ рд╕рд░реНрд╡ рд╕рдорд╡рдпрд╕реНрдХрд╛рдВрдирд╛ рд╕рдВрджреЗрд╢ рд╡рд┐рддрд░рдгрд╛рдЪреА рд╣рдореА рджреЗрддреЗ. рдФрджреНрдпреЛрдЧрд┐рдХ рдкреНрд░рдгрд╛рд▓реАрдВрд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ
рдХреЙрд▓рдлреНрд▓реЛ
- рдЕрдиреБрдкреНрд░рдпреЛрдЧ Go, Node.js рдХрд┐рдВрд╡рд╛ Java SDK рд╡рд╛рдкрд░реВрди рд╣рд╛рдпрдкрд░рд▓реЗрдЬрд░ рдлреЕрдмреНрд░рд┐рдХрд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрддреЛ;
- рдХреНрд▓рд╛рдпрдВрдЯ tx рд╡реНрдпрд╡рд╣рд╛рд░ рддрдпрд╛рд░ рдХрд░рддреЛ рдЖрдгрд┐ рддреЛ рд╕рдорд╡рдпрд╕реНрдХрд╛рдВрдирд╛ рдкрд╛рдард╡рддреЛ;
- рдкреАрдЕрд░ рдХреНрд▓рд╛рдпрдВрдЯрдЪреНрдпрд╛ рд╕реНрд╡рд╛рдХреНрд╖рд░реАрдЪреА рдкрдбрддрд╛рд│рдгреА рдХрд░рддреЛ, рд╡реНрдпрд╡рд╣рд╛рд░ рдкреВрд░реНрдг рдХрд░рддреЛ рдЖрдгрд┐ рд╕рдорд░реНрдердирд╛рдЪреА рд╕реНрд╡рд╛рдХреНрд╖рд░реА рдХреНрд▓рд╛рдпрдВрдЯрд▓рд╛ рдкрд░рдд рдкрд╛рдард╡рддреЛ. рдЪреЗрдирдХреЛрдб рдХреЗрд╡рд│ рд╕рдорд░реНрдерди рдХрд░рдгрд╛рд▒реНрдпрд╛ рдкреАрдЕрд░рд╡рд░рдЪ рдЕрдВрдорд▓рд╛рдд рдЖрдгрд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ рддреНрдпрд╛рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪрд╛ рдкрд░рд┐рдгрд╛рдо рд╕рд░реНрд╡ рд╕рдорд╡рдпрд╕реНрдХрд╛рдВрдирд╛ рдкрд╛рдард╡рд▓рд╛ рдЬрд╛рддреЛ. рдХрд╛рдорд╛рдЪреНрдпрд╛ рдпрд╛ рдЕрд▓реНрдЧреЛрд░рд┐рджрдорд▓рд╛ рдкреАрдмреАрдПрдлрдЯреА (рдкреНрд░реЕрдХреНрдЯрд┐рдХрд▓ рдмрд╛рдпрдЭрдБрдЯрд╛рдЗрди рдлреЙрд▓реНрдЯ рдЯреЙрд▓рд░рдВрдЯ) рдПрдХрдордд рдЕрд╕реЗ рдореНрд╣рдгрддрд╛рдд. рдЪреНрдпрд╛рдкрд╛рд╕реБрди рд╡реЗрдЧрд│реЗ
рдХреНрд▓рд╛рд╕рд┐рдХ BFT рд╕рдВрджреЗрд╢ рдкрд╛рдард╡рд┐рд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ рдЖрдгрд┐ рдкреБрд╖реНрдЯреАрдХрд░рдг рд╕рд░реНрд╡ рд╕рд╣рднрд╛рдЧреАрдВрдХрдбреВрди рдЕрдкреЗрдХреНрд╖рд┐рдд рдирд╛рд╣реА, рдкрд░рдВрддреБ рдХреЗрд╡рд│ рдПрдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдЪрд╛рдХрдбреВрди рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрд╣реЗ; - рдХреНрд▓рд╛рдпрдВрдЯрд▓рд╛ рд╕рдорд░реНрдерди рдзреЛрд░рдгрд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рддрд┐рд╕рд╛рджрд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░, рддреЛ рдСрд░реНрдбрд░рд┐рдВрдЧ рд╕реЗрд╡реЗрдХрдбреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд╛рдард╡рддреЛ;
- рдСрд░реНрдбрд░рд┐рдВрдЧ рд╕реЗрд╡рд╛ рдмреНрд▓реЙрдХ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рддреЗ рдЖрдгрд┐ рд╕рд░реНрд╡ рдХрдорд┐рдЯрд┐рдВрдЧ рдкреАрдЕрд░реНрд╕рдирд╛ рдкрд╛рдард╡рддреЗ. рдСрд░реНрдбрд░рд┐рдВрдЧ рд╕реЗрд╡рд╛ рдмреНрд▓реЙрдХреНрд╕рдЪреЗ рдЕрдиреБрдХреНрд░рдорд┐рдХ рд░реЗрдХреЙрд░реНрдбрд┐рдВрдЧ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ, рдЬреЗ рддрдерд╛рдХрдерд┐рдд рд▓реЗрдЬрд░ рдлреЛрд░реНрдХ рдХрд╛рдвреВрди рдЯрд╛рдХрддреЗ (
"рдХрд╛рдЯреЗ" рд╡рд┐рднрд╛рдЧ рдкрд╣рд╛ ); - рд╕рдорд╡рдпрд╕реНрдХрд╛рдВрдирд╛ рдПрдХ рдмреНрд▓реЙрдХ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЛ, рд╕рдорд░реНрдерди рдзреЛрд░рдг рдкреБрдиреНрд╣рд╛ рддрдкрд╛рд╕рд╛, рдмреНрд▓реЙрдХрдЪреЗрдирд╡рд░ рдмреНрд▓реЙрдХ рд▓рд┐рд╣рд╛ рдЖрдгрд┐ "рдЬрд╛рдЧрддрд┐рдХ рд░рд╛рдЬреНрдп" DB рдордзреНрдпреЗ рд╕реНрдерд┐рддреА рдмрджрд▓рд╛.
рддреНрдпрд╛. рдпрд╛рдореБрд│реЗ рдиреЛрдбреНрд╕рдордзреАрд▓ рднреВрдорд┐рдХрд╛рдВрдЪреЗ рд╡рд┐рднрд╛рдЬрди рд╣реЛрддреЗ. рд╣реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рдХреА рдмреНрд▓реЙрдХрдЪреЗрди рд╕реНрдХреЗрд▓реЗрдмрд▓ рдЖрдгрд┐ рд╕реБрд░рдХреНрд╖рд┐рдд рдЖрд╣реЗ:
- рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯ (рдЪреЗрдирдХреЛрдб) рд╕рдорд╡рдпрд╕реНрдХрд╛рдВрдЪреЗ рд╕рдорд░реНрдерди рдХрд░рддрд╛рдд. рд╣реЗ рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░рд╛рдВрдЪреА рдЧреЛрдкрдиреАрдпрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ, рдХрд╛рд░рдг рд╣реЗ рд╕рд░реНрд╡ рд╕рд╣рднрд╛рдЧреАрдВрджреНрд╡рд╛рд░реЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдд рдирд╛рд╣реА, рдкрд░рдВрддреБ рдХреЗрд╡рд│ рд╕рдорд╡рдпрд╕реНрдХрд╛рдВрдирд╛ рдорд╛рдиреНрдпрддрд╛ рджреЗрдКрди.
- рдСрд░реНрдбрд░ рддреНрд╡рд░реАрдд рдХрд╛рд░реНрдп рдХрд░рд╛рд╡реЗ. рдСрд░реНрдбрд░рд┐рдВрдЧ рдХреЗрд╡рд│ рдПрдХ рдмреНрд▓реЙрдХ рдмрдирд╡рддреЗ рдЖрдгрд┐ рд▓реАрдбрд░ рд╕рдорд╡рдпрд╕реНрдХрд╛рдВрдЪреНрдпрд╛ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЪрд╛рд▓рд╛ рдкрд╛рдард╡рддреЗ рдпрд╛ рд╡рд╕реНрддреБрд╕реНрдерд┐рддреАрджреНрд╡рд╛рд░реЗ рдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХреЗрд▓реА рдЬрд╛рддреЗ.
- рд╡рдЪрдирдмрджреНрдз рд╕рдорд╡рдпрд╕реНрдХ рдлрдХреНрдд рдмреНрд▓реЙрдХрдЪреЗрди рд╕рдВрдЪрдпрд┐рдд рдХрд░рддрд╛рдд - рддреНрдпрд╛рдкреИрдХреА рдмрд░реЗрдЪ рдЕрд╕реВ рд╢рдХрддрд╛рдд рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рдЦреВрдк рд╢рдХреНрддреА рдЖрдгрд┐ рддреНрд╡рд░рд┐рдд рдСрдкрд░реЗрд╢рдирдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╕рддреЗ.
рд╣рд╛рдпрдкрд░рд▓реЗрдЬрд░ рдлреЕрдмреНрд░рд┐рдХрдЪреНрдпрд╛ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд▓ рд╕реЛрд▓реНрдпреВрд╢рдиреНрд╕рдмрджреНрджрд▓ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓ рдЖрдгрд┐ рддреЗ рдЕрд╕реЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддреЗ рдЖрдгрд┐ рдЕрдиреНрдпрдерд╛ рдирд╛рд╣реА рдпреЗрдереЗ рдЖрдврд│реВ рд╢рдХрддреЗ:
рддрд░, рд╣рд╛рдпрдкрд░рд▓реЗрдЬрд░ рдлреЕрдмреНрд░рд┐рдХ рд╣реА рдЦрд░реЛрдЦрд░рдЪ рд╕рд╛рд░реНрд╡рддреНрд░рд┐рдХ рдкреНрд░рдгрд╛рд▓реА рдЖрд╣реЗ рдЬреНрдпрд╛рджреНрд╡рд╛рд░реЗ рддреБрдореНрд╣реА рд╣реЗ рдХрд░реВ рд╢рдХрддрд╛:
- рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯ рдпрдВрддреНрд░рдгрд╛ рд╡рд╛рдкрд░реВрди рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╡реНрдпрд╡рд╕рд╛рдп рддрд░реНрдХ рд▓рд╛рдЧреВ рдХрд░рд╛;
- рдмреНрд▓реЙрдХрдЪреЗрди рдбреЗрдЯрд╛рдмреЗрд╕рдордзреВрди JSON рд╕реНрд╡рд░реВрдкрд╛рдд рдбреЗрдЯрд╛ рд░реЗрдХреЙрд░реНрдб рдХрд░рд╛ рдЖрдгрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рд╛;
- рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд╛рдкрд░реВрди API рдкреНрд░рд╡реЗрд╢ рдордВрдЬреВрд░ рдХрд░рд╛ рдЖрдгрд┐ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рд╛.
рдЖрддрд╛ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╣рд╛рдпрдкрд░рд▓реЗрдЬрд░ рдлреЕрдмреНрд░рд┐рдХрдЪреНрдпрд╛ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдмрджреНрджрд▓ рдереЛрдбреЗрд╕реЗ рд╕рдордЬрд▓реЗ рдЖрд╣реЗ, рдЪрд▓рд╛ рд╢реЗрд╡рдЯреА рдХрд╛рд╣реАрддрд░реА рдЙрдкрдпреБрдХреНрдд рдХрд░реВрдпрд╛!
рдмреНрд▓реЙрдХрдЪреЗрди рддреИрдирд╛рдд рдХрд░рдд рдЖрд╣реЗ
рд╕рдорд╕реНрдпреЗрдЪреА рдирд┐рд░реНрдорд┐рддреА
рдЦрд╛рд▓реАрд▓ рдХрд╛рд░реНрдпрд╛рдВрд╕рд╣ Citcoin рдиреЗрдЯрд╡рд░реНрдХрдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХрд░рдгреЗ рд╣реЗ рдХрд╛рд░реНрдп рдЖрд╣реЗ: рдЦрд╛рддреЗ рддрдпрд╛рд░ рдХрд░рд╛, рд╢рд┐рд▓реНрд▓рдХ рдорд┐рд│рд╡рд╛, рддреБрдордЪреЗ рдЦрд╛рддреЗ рдЯреЙрдк рдЕрдк рдХрд░рд╛, рдПрдХрд╛ рдЦрд╛рддреНрдпрд╛рддреВрди рджреБрд╕рд▒реНрдпрд╛ рдЦрд╛рддреНрдпрд╛рдд рдирд╛рдгреА рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рд╛. рдЪрд▓рд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбреЗрд▓ рдХрд╛рдвреВ, рдЬреЗ рдЖрдореНрд╣реА рдкреБрдвреЗ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯрдордзреНрдпреЗ рд▓рд╛рдЧреВ рдХрд░реВ. рддрд░, рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдирд╛рд╡рд╛рдВрджреНрд╡рд╛рд░реЗ рдУрд│рдЦрд▓реА рдЬрд╛рдгрд╛рд░реА рдЖрдгрд┐ рд╢рд┐рд▓реНрд▓рдХ рдЕрд╕рд▓реЗрд▓реА рдЦрд╛рддреА рдЖрдгрд┐ рдЦрд╛рддреНрдпрд╛рдВрдЪреА рдпрд╛рджреА рдЕрд╕реЗрд▓. рд╣рд╛рдпрдкрд░рд▓реЗрдЬрд░ рдлреЕрдмреНрд░рд┐рдХ рдорд╛рд▓рдорддреНрддреЗрдЪреНрдпрд╛ рд╕рдВрджрд░реНрднрд╛рдд рдЦрд╛рддреА рдЖрдгрд┐ рдЦрд╛рддреНрдпрд╛рдВрдЪреА рдпрд╛рджреА рдЖрд╣реЗ. рддреНрдпрд╛рдиреБрд╕рд╛рд░, рддреНрдпрд╛рдВрдЪрд╛ рдЗрддрд┐рд╣рд╛рд╕ рдЖрдгрд┐ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддреА рдЖрд╣реЗ. рдореА рд╣реЗ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдХрд╛рдврдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реЗрди:
рд╢реАрд░реНрд╖ рдЖрдХрдбреЗ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддреА рдЖрд╣реЗрдд, рдЬреА "рдЬрд╛рдЧрддрд┐рдХ рд░рд╛рдЬреНрдп" рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реА рдЬрд╛рддреЗ. рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдЦрд╛рд▓реА рдмреНрд▓реЙрдХрдЪреЗрдирдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдЗрддрд┐рд╣рд╛рд╕ рджрд░реНрд╢рд╡рд┐рдгрд╛рд░реЗ рдЖрдХрдбреЗ рдЖрд╣реЗрдд. рдорд╛рд▓рдорддреНрддреЗрдЪреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддреА рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдВрджреНрд╡рд╛рд░реЗ рдмрджрд▓рд▓реА рдЬрд╛рддреЗ. рдорд╛рд▓рдорддреНрддрд╛ рдХреЗрд╡рд│ рд╕рдВрдкреВрд░реНрдгрдкрдгреЗ рдмрджрд▓рддреЗ, рдореНрд╣рдгреВрди рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдЪреНрдпрд╛ рдкрд░рд┐рдгрд╛рдореА, рдПрдХ рдирд╡реАрди рд╡рд╕реНрддреВ рддрдпрд╛рд░ рдХреЗрд▓реА рдЬрд╛рддреЗ рдЖрдгрд┐ рдорд╛рд▓рдорддреНрддреЗрдЪреЗ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдЗрддрд┐рд╣рд╛рд╕рд╛рдд рдЬрд╛рддреЗ.
IBM рдХреНрд▓рд╛рдЙрдб
рдЖрдореНрд╣реА рдордзреНрдпреЗ рдЦрд╛рддреЗ рддрдпрд╛рд░ рдХрд░рддреЛ
рдмреНрд▓реЙрдХрдЪреЗрди рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рд╡рд╛рдкрд░реВрди рдореВрд▓рднреВрдд рдмреНрд▓реЙрдХрдЪреЗрди рдиреЗрдЯрд╡рд░реНрдХ рддрдпрд╛рд░ рдХрд░рд╛ рдмреНрд▓реЙрдХрдЪреЗрди рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░ рддрдпрд╛рд░ рдХрд░рд╛ рдЖрдгрд┐ рдЕрдВрдорд▓рд╛рдд рдЖрдгрд╛ рдмреНрд▓реЙрдХрдЪреЗрди рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░реВрди рдЗрд╡реНрд╣реЗрдВрдЯ рд╕реЛрдбрд╛
рдЦрд╛рд▓реАрд▓ IBM рдмреНрд▓реЙрдХрдЪреЗрди рдкреНрд▓реЕрдЯрдлреЙрд░реНрдордЪреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдЖрд╣реЗрдд. рд╣реЗ рдмреНрд▓реЙрдХрдЪреЗрди рдХрд╕реЗ рддрдпрд╛рд░ рдХрд░рд╛рд╡реЗ рдпрд╛рд╡рд░реАрд▓ рд╕реВрдЪрдирд╛ рдирд╛рд╣реА, рдкрд░рдВрддреБ рдХрд╛рд░реНрдпрд╛рдЪреНрдпрд╛ рд╡реНрдпрд╛рдкреНрддреАрдЪреЗ рдлрдХреНрдд рдПрдХ рдкреНрд░рд╛рддреНрдпрдХреНрд╖рд┐рдХ рдЖрд╣реЗ. рддрд░, рдЖрдордЪреНрдпрд╛ рдЙрджреНрджреЗрд╢рд╛рдВрд╕рд╛рдареА, рдЖрдореНрд╣реА рдПрдХ рд╕рдВрд╕реНрдерд╛ рдмрдирд╡рддреЛ:
рдЖрдореНрд╣реА рддреНрдпрд╛рдд рдиреЛрдбреНрд╕ рддрдпрд╛рд░ рдХрд░рддреЛ: рдСрд░реНрдбрд░рд░ CA, Org1 CA, Orderer Peer:
рдЖрдореНрд╣реА рд╡рд╛рдкрд░рдХрд░реНрддреЗ рддрдпрд╛рд░ рдХрд░рддреЛ:
рдПрдХ рдЪреЕрдирд▓ рддрдпрд╛рд░ рдХрд░рд╛ рдЖрдгрд┐ рддреНрдпрд╛рд▓рд╛ citcoin рдореНрд╣рдгрд╛:
рдореВрд▓рдд: рдЪреЕрдирд▓ рдПрдХ рдмреНрд▓реЙрдХрдЪреЗрди рдЖрд╣реЗ, рдореНрд╣рдгреВрди рддреЗ рдмреНрд▓реЙрдХ рд╢реВрдиреНрдп (рдЬреЗрдиреЗрд╕рд┐рд╕ рдмреНрд▓реЙрдХ) рдиреЗ рд╕реБрд░реВ рд╣реЛрддреЗ:
рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░ рд▓рд┐рд╣рд┐рдгреЗ
/*
* 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;
рдЕрдВрддрд░реНрдЬреНрдЮрд╛рдирд╛рдиреЗ, рдпреЗрдереЗ рд╕рд░реНрд╡рдХрд╛рд╣реА рд╕реНрдкрд╖реНрдЯ рдЕрд╕рд╛рд╡реЗ:
- рдбреЗрдореЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣рд╛рдпрдкрд░рд▓реЗрдЬрд░ рдлреЕрдмреНрд░рд┐рдХ API рд╡рд╛рдкрд░реВрди рдХреЙрд▓ рдХрд░реЗрд▓ рдЕрд╢реА рдЕрдиреЗрдХ рдлрдВрдХреНрд╢рдиреНрд╕ (AddAccount, GetAccounts, SendFrom, GetBalance, RefillBalance) рдЖрд╣реЗрдд.
- SendFrom рдЖрдгрд┐ RefillBalance рдлрдВрдХреНрд╢рдиреНрд╕ рдбреЗрдореЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд▓рд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдгрд╛рд░реЗ рдЗрд╡реНрд╣реЗрдВрдЯреНрд╕ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рддрд╛рдд.
- рдЬреЗрд╡реНрд╣рд╛ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯ рдЗрдиреНрд╕реНрдЯрдВрдЯ рдХреЗрд▓реЗ рдЬрд╛рддреЗ рддреЗрд╡реНрд╣рд╛ рдЗрдиреНрд╕реНрдЯрдВрдЯ рдлрдВрдХреНрд╢рди рдПрдХрджрд╛ рдХреЙрд▓ рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рдЦрд░рдВ рддрд░, рд╣реЗ рдлрдХреНрдд рдПрдХрджрд╛рдЪ рдирд╛рд╣реА рддрд░ рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд│реА рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯ рдЖрд╡реГрддреНрддреА рдмрджрд▓рддреЗ рдЕрд╕реЗ рдореНрд╣рдЯрд▓реЗ рдЬрд╛рддреЗ. рдореНрд╣рдгреВрди, рд░рд┐рдХреНрдд рдЕреЕрд░реЗрд╕рд╣ рд╕реВрдЪреА рд╕реБрд░реВ рдХрд░рдгреЗ рд╣реА рд╡рд╛рдИрдЯ рдХрд▓реНрдкрдирд╛ рдЖрд╣реЗ, рдХрд╛рд░рдг рдЖрддрд╛, рдЬреЗрд╡реНрд╣рд╛ рдЖрдореНрд╣реА рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░рд╛рдЪреА рдЖрд╡реГрддреНрддреА рдмрджрд▓рддреЛ, рддреЗрд╡реНрд╣рд╛ рдЖрдореНрд╣реА рд╕рдзреНрдпрд╛рдЪреА рдпрд╛рджреА рдЧрдорд╛рд╡реВ. рдкрдг рд╣реЗ рдареАрдХ рдЖрд╣реЗ, рдореА рдлрдХреНрдд рд╢рд┐рдХрдд рдЖрд╣реЗ).
- рдЦрд╛рддреА рдЖрдгрд┐ рдЦрд╛рддреНрдпрд╛рдВрдЪреА рд╕реВрдЪреА рдореНрд╣рдгрдЬреЗ JSON рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕. рдЬреЗрдПрд╕рдЪрд╛ рд╡рд╛рдкрд░ рдбреЗрдЯрд╛ рдореЕрдирд┐рдкреБрд▓реЗрд╢рдирд╕рд╛рдареА рдХреЗрд▓рд╛ рдЬрд╛рддреЛ.
- рддреБрдореНрд╣реА getState рдлрдВрдХреНрд╢рди рдХреЙрд▓ рд╡рд╛рдкрд░реВрди рдорд╛рд▓рдорддреНрддреЗрдЪреЗ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдорд┐рд│рд╡реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рдкреБрдЯрд╕реНрдЯреЗрдЯ рд╡рд╛рдкрд░реВрди рддреЗ рдЕрдкрдбреЗрдЯ рдХрд░реВ рд╢рдХрддрд╛.
- рдЦрд╛рддреЗ рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛, AddAccount рдлрдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗрд▓реЗ рдЬрд╛рддреЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рдмреНрд▓реЙрдХрдЪреЗрдирдордзреАрд▓ рдЬрд╛рд╕реНрддреАрдд рдЬрд╛рд╕реНрдд рдЦрд╛рддреНрдпрд╛рдВрдЪреА рддреБрд▓рдирд╛ рдХреЗрд▓реА рдЬрд╛рддреЗ (maxAccounts = 5). рдЖрдгрд┐ рдЗрдереЗ рдПрдХ рдардкреНрдк рдЖрд╣реЗ (рддреБрдордЪреНрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдЖрд▓реЗ рдЖрд╣реЗ рдХрд╛?), рдЬреНрдпрд╛рдореБрд│реЗ рдЦрд╛рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдд рдЕрдВрддрд╣реАрди рд╡рд╛рдв рд╣реЛрддреЗ. рдЕрд╢рд╛ рдЪреБрдХрд╛ рдЯрд╛рд│рд╛рд╡реНрдпрд╛рдд)
рдкреБрдвреЗ, рдЖрдореНрд╣реА рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯ рдЪреЕрдиреЗрд▓рдордзреНрдпреЗ рд▓реЛрдб рдХрд░рддреЛ рдЖрдгрд┐ рддреЗ рдЗрдиреНрд╕реНрдЯрдВрдЯ рдХрд░рддреЛ:
рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареАрдЪреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд╛рд╣реВ:
рдЪрд▓рд╛ рдЖрдордЪреНрдпрд╛ рдЪреЕрдиреЗрд▓рдмрджреНрджрд▓ рддрдкрд╢реАрд▓ рдкрд╛рд╣реВ:
рдкрд░рд┐рдгрд╛рдореА, рдЖрдореНрд╣рд╛рд▓рд╛ IBM рдХреНрд▓рд╛рдЙрдбрдордзреНрдпреЗ рдмреНрд▓реЙрдХрдЪреЗрди рдиреЗрдЯрд╡рд░реНрдХрдЪреЗ рдЦрд╛рд▓реАрд▓ рдЪрд┐рддреНрд░ рдорд┐рд│рддреЗ. рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдЕреЕрдореЗрдЭреЙрди рдХреНрд▓рд╛рдЙрдбрдордзреНрдпреЗ рдЪрд╛рд▓рдгрд╛рд░рд╛ рдбреЗрдореЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рджреЗрдЦреАрд▓ рдЖрдХреГрддреА рджрд╛рдЦрд╡рддреЗ (рддреНрдпрд╛рдмрджреНрджрд▓ рдкреБрдвреАрд▓ рд╡рд┐рднрд╛рдЧрд╛рдд рдЕрдзрд┐рдХ):
Hyperledger Fabric API рдХреЙрд▓рд╕рд╛рдареА GUI рддрдпрд╛рд░ рдХрд░рдгреЗ
рд╣рд╛рдпрдкрд░рд▓реЗрдЬрд░ рдлреЕрдмреНрд░рд┐рдХрдордзреНрдпреЗ API рдЖрд╣реЗ рдЬреЗ рдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ:
- рдЪреЕрдиреЗрд▓ рддрдпрд╛рд░ рдХрд░рд╛;
- рдХрдиреЗрдХреНрд╢рди рдЪреЕрдиреЗрд▓ рдкреАрдЕрд░;
- рдЪреЕрдиреЗрд▓рдордзреНрдпреЗ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯрдЪреА рд╕реНрдерд╛рдкрдирд╛ рдЖрдгрд┐ рдЗрдиреНрд╕реНрдЯрдВрдЯреЗрд╢рди;
- рдХреЙрд▓рд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░;
- рдмреНрд▓реЙрдХрдЪреЗрдирд╡рд░ рдорд╛рд╣рд┐рддреАрдЪреА рд╡рд┐рдирдВрддреА рдХрд░рд╛.
рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕
рдЖрдордЪреНрдпрд╛ рдбреЗрдореЛ рдкреНрд░реЛрдЧреНрд░рд╛рдордордзреНрдпреЗ рдЖрдореНрд╣реА API рдЪрд╛ рд╡рд╛рдкрд░ рдлрдХреНрдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЙрд▓ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдорд╛рд╣рд┐рддреАрдЪреА рд╡рд┐рдирдВрддреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд░реВ, рдХрд╛рд░рдг рдЖрдореНрд╣реА IBM рдмреНрд▓реЙрдХрдЪреЗрди рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рд╡рд╛рдкрд░реВрди рдЙрд░реНрд╡рд░рд┐рдд рдкрд╛рдпрд▒реНрдпрд╛ рдЖрдзреАрдЪ рдкреВрд░реНрдг рдХреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд. рдЖрдореНрд╣реА рдорд╛рдирдХ рддрдВрддреНрд░рдЬреНрдЮрд╛рди рд╕реНрдЯреЕрдХ рд╡рд╛рдкрд░реВрди GUI рд▓рд┐рд╣рд┐рддреЛ: Express.js + Vue.js + Node.js. рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ рдХрд╕реЗ рдмрдирд╡рд╛рдпрдЪреЗ рдпрд╛рдмрджреНрджрд▓ рддреБрдореНрд╣реА рд╕реНрд╡рддрдВрддреНрд░ рд▓реЗрдЦ рд▓рд┐рд╣реВ рд╢рдХрддрд╛. рдорд▓рд╛ рд╕рд░реНрд╡рд╛рдд рдЬрд╛рд╕реНрдд рдЖрд╡рдбрд▓реЗрд▓реНрдпрд╛ рд╡реНрдпрд╛рдЦреНрдпрд╛рдирд╛рдВрдЪреНрдпрд╛ рдорд╛рд▓рд┐рдХреЗрдЪреА рд▓рд┐рдВрдХ рдореА рдпреЗрдереЗ рджреЗрдд рдЖрд╣реЗ:
- 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 рдЪреЗ рд╡рд░реНрдгрди
рдНрдореЗрдЭреЙрди рдХреНрд▓рд╛рдЙрдбрдордзреНрдпреЗ рдбреЗрдореЛ рдНрдкреНрд▓рд┐рдХреЗрд╢рди
рдореА рдНрдореЗрдЭреЙрди рд╡рд░ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдкрд▓реЛрдб рдХреЗрд▓реЗ рдХрд╛рд░рдг... IBM рдЕрджреНрдпрд╛рдк рдорд╛рдЭреЗ рдЦрд╛рддреЗ рд╢реНрд░реЗрдгреАрд╕реБрдзрд╛рд░рд┐рдд рдХрд░реВ рд╢рдХрд▓реЗ рдирд╛рд╣реА рдЖрдгрд┐ рдорд▓рд╛ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рд╕рд░реНрд╡реНрд╣рд░ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрдК рд╢рдХрд▓реЗ рдирд╛рд╣реА. рдбреЛрдореЗрдирдордзреНрдпреЗ рдЪреЗрд░реА рдХрд╢реА рдЬреЛрдбрд╛рдпрдЪреА:
- рдмреНрд▓реЙрдХрдЪреЗрди рд╕реБрд░реВ рдХрд░рд╛;
- рдЦрд╛рддреЗ рддрдпрд╛рд░ рдХрд░рд╛ (рдкрд░рдВрддреБ рдЖрддрд╛ рддреБрдореНрд╣реА рдирд╡реАрди рдЦрд╛рддреЗ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА, рдХрд╛рд░рдг рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯрдордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЦрд╛рддреНрдпрд╛рдВрдЪреА рдХрдорд╛рд▓ рд╕рдВрдЦреНрдпрд╛ рдмреНрд▓реЙрдХрдЪреЗрдирдордзреНрдпреЗ рдкреЛрд╣реЛрдЪрд▓реА рдЖрд╣реЗ);
- рдЦрд╛рддреНрдпрд╛рдВрдЪреА рдпрд╛рджреА рдкреНрд░рд╛рдкреНрдд рдХрд░рд╛;
- рдЕреЕрд▓рд┐рд╕, рдмреЙрдм рдЖрдгрд┐ рдЕреЕрд▓реЗрдХреНрд╕ рджрд░рдореНрдпрд╛рди citcoin рдирд╛рдгреА рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рд╛;
- рдЗрд╡реНрд╣реЗрдВрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рд╛ (рдкрд░рдВрддреБ рдЖрддрд╛ рдЗрд╡реНрд╣реЗрдВрдЯ рджрд░реНрд╢рд╡рд┐рдгреНрдпрд╛рдЪрд╛ рдХреЛрдгрддрд╛рд╣реА рдорд╛рд░реНрдЧ рдирд╛рд╣реА, рддреНрдпрд╛рдореБрд│реЗ рд╕рд╛рдзреЗрдкрдгрд╛рд╕рд╛рдареА, рдЗрдВрдЯрд░рдлреЗрд╕ рдореНрд╣рдгрддреЛ рдХреА рдЗрд╡реНрд╣реЗрдВрдЯ рд╕рдорд░реНрдерд┐рдд рдирд╛рд╣реАрдд);
- рд▓реЙрдЧ рдХреНрд░рд┐рдпрд╛.
рдкреНрд░рдердо рдЖрдореНрд╣реА рдмреНрд▓реЙрдХрдЪреЗрди рд╕реБрд░реВ рдХрд░рддреЛ:
рдкреБрдвреЗ, рдЖрдореНрд╣реА рдЖрдордЪреЗ рдЦрд╛рддреЗ рддрдпрд╛рд░ рдХрд░рддреЛ, рд╢рд┐рд▓реНрд▓рдХ рд╕рд╣ рд╡реЗрд│ рд╡рд╛рдпрд╛ рдШрд╛рд▓рд╡реВ рдирдХрд╛:
рдЖрдореНрд╣рд╛рд▓рд╛ рд╕рд░реНрд╡ рдЙрдкрд▓рдмреНрдз рдЦрд╛рддреНрдпрд╛рдВрдЪреА рдпрд╛рджреА рдорд┐рд│рддреЗ:
рдЖрдореНрд╣реА рдкреНрд░реЗрд╖рдХ рдЖрдгрд┐ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдирд┐рд╡рдбрддреЛ рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреА рд╢рд┐рд▓реНрд▓рдХ рдорд┐рд│рд╡рддреЛ. рдкреНрд░реЗрд╖рдХ рдЖрдгрд┐ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рд╕рдорд╛рди рдЕрд╕рд▓реНрдпрд╛рд╕, рддреНрдпрд╛рдЪреЗ рдЦрд╛рддреЗ рдкреБрдиреНрд╣рд╛ рднрд░рд▓реЗ рдЬрд╛рдИрд▓:
рд▓реЙрдЧрдордзреНрдпреЗ рдЖрдореНрд╣реА рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдВрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддреЛ:
рд╡рд╛рд╕реНрддрд╡рд┐рдХ, рдбреЗрдореЛ рдкреНрд░реЛрдЧреНрд░рд╛рдордордзреНрдпреЗ рд╣реЗ рд╕рд░реНрд╡ рдЖрд╣реЗ. рдЦрд╛рд▓реА рддреБрдореНрд╣реА рдЖрдордЪрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдмреНрд▓реЙрдХрдЪреЗрдирдордзреНрдпреЗ рдкрд╛рд╣реВ рд╢рдХрддрд╛:
рдЖрдгрд┐ рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдВрдЪреА рд╕рд╛рдорд╛рдиреНрдп рдпрд╛рджреА:
рдпрд╛рд╕рд╣, рдЖрдореНрд╣реА Citcoin рдиреЗрдЯрд╡рд░реНрдХ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА PoC рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ рдкреВрд░реНрдг рдХреЗрд▓реА рдЖрд╣реЗ. рдирд╛рдгреА рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА Citcoin рдПрдХ рдкреВрд░реНрдг рдиреЗрдЯрд╡рд░реНрдХ рдмрдирдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрдЦреА рдХрд╛рдп рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ? рдлрд╛рд░ рдереЛрдбреЗ:
- рдЦрд╛рддреЗ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░, рдЦрд╛рдЬрдЧреА/рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреА рддрдпрд╛рд░ рдХрд░рдгреЗ рд▓рд╛рдЧреВ рдХрд░рд╛. рдЦрд╛рдЬрдЧреА рдХреА рдЦрд╛рддреЗ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдХрдбреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреА рдмреНрд▓реЙрдХрдЪреЗрдирдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
- рдирд╛рдгреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХрд░рд╛ рдЬреНрдпрд╛рдордзреНрдпреЗ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд▓рд╛ рдУрд│рдЦрдгреНрдпрд╛рд╕рд╛рдареА рдирд╛рд╡рд╛рдРрд╡рдЬреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреА рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддреЗ.
- рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдХрдбреВрди рд╕рд░реНрд╡реНрд╣рд░рдХрдбреЗ рдЬрд╛рдгрд╛рд░реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рддреНрдпрд╛рдЪреНрдпрд╛ рдЦрд╛рдЬрдЧреА рдХреА рд╡рд╛рдкрд░реВрди рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рд╛.
рдирд┐рд╖реНрдХрд░реНрд╖
рдЖрдореНрд╣реА рдЦрд╛рд▓реАрд▓ рдХрд╛рд░реНрдпрд╛рдВрд╕рд╣ Citcoin рдиреЗрдЯрд╡рд░реНрдХ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЖрд╣реЗ: рдЦрд╛рддреЗ рдЬреЛрдбрд╛, рд╢рд┐рд▓реНрд▓рдХ рдорд┐рд│рд╡рд╛, рддреБрдордЪреЗ рдЦрд╛рддреЗ рдЯреЙрдк рдЕрдк рдХрд░рд╛, рдПрдХрд╛ рдЦрд╛рддреНрдпрд╛рддреВрди рджреБрд╕рд▒реНрдпрд╛ рдЦрд╛рддреНрдпрд╛рдд рдирд╛рдгреА рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рд╛. рддрд░, PoC рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рдЦрд░реНрдЪ рдЖрд▓рд╛?
- рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ рдмреНрд▓реЙрдХрдЪреЗрди рдЖрдгрд┐ рд╡рд┐рд╢реЗрд╖рддрдГ рд╣рд╛рдпрдкрд░рд▓реЗрдЬрд░ рдлреЕрдмреНрд░рд┐рдХрдЪрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ;
- IBM рдХрд┐рдВрд╡рд╛ Amazon рдврдЧ рд╡рд╛рдкрд░рд╛рдпрд▓рд╛ рд╢рд┐рдХрд╛;
- JS рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдЖрдгрд┐ рдХрд╛рд╣реА рд╡реЗрдм рдлреНрд░реЗрдорд╡рд░реНрдХ рдЬрд╛рдгреВрди рдШреНрдпрд╛;
- рдХрд╛рд╣реА рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХрдЪреЗрдирдордзреНрдпреЗ рдирд╛рд╣реА рддрд░ рд╡реЗрдЧрд│реНрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕, рдирдВрддрд░ рд╕рдорд╛рдХрд▓рд┐рдд рдХрд░рдгреЗ рд╢рд┐рдХрд╛, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, PostgreSQL рд╕рд╣;
- рдЖрдгрд┐ рд╢реЗрд╡рдЯрдЪреЗ рдкрд░рдВрддреБ рдХрд┐рдорд╛рди рдирд╛рд╣реА - рдЖрдкрдг рд▓рд┐рдирдХреНрд╕рдЪреНрдпрд╛ рдЬреНрдЮрд╛рдирд╛рд╢рд┐рд╡рд╛рдп рдЖрдзреБрдирд┐рдХ рдЬрдЧрд╛рдд рдЬрдЧреВ рд╢рдХрдд рдирд╛рд╣реА!)
рдЕрд░реНрдерд╛рдд, рд╣реЗ рд░реЙрдХреЗрдЯ рд╡рд┐рдЬреНрдЮрд╛рди рдирд╛рд╣реА, рдкрд░рдВрддреБ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрдареЛрд░ рдкрд░рд┐рд╢реНрд░рдо рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧрддреАрд▓!
GitHub рд╡рд░ рд╕реНрд░реЛрдд
рд╕реВрддреНрд░реЗ рд▓рд╛рд╡рд▓реА
рдХреЕрдЯрд▓реЙрдЧ ┬лрд╕рд░реНрд╡реНрд╣рд░┬╗ тАФ Node.js рд╕рд░реНрд╡реНрд╣рд░
рдХреЕрдЯрд▓реЙрдЧ ┬лрдХреНрд▓рд╛рдпрдВрдЯ┬╗ тАФ Node.js рдХреНрд▓рд╛рдпрдВрдЯ
рдХреЕрдЯрд▓реЙрдЧ ┬лblockchain"(рдкреЕрд░рд╛рдореАрдЯрд░ рдореВрд▓реНрдпреЗ рдЖрдгрд┐ рдХреА, рдЕрд░реНрдерд╛рддрдЪ, рдХрд╛рд░реНрдпрд░рдд рдирд╕рд▓реЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд рдЖрдгрд┐ рдлрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореНрд╣рдгреВрди рджрд┐рд▓реНрдпрд╛ рдЖрд╣реЗрдд):
- рдХрд░рд╛рд░ тАФ рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░ рд╕реНрд░реЛрдд рдХреЛрдб
- рд╡реЙрд▓реЗрдЯ тАФ рд╣рд╛рдпрдкрд░рд▓реЗрдЬрд░ рдлреЕрдмреНрд░рд┐рдХ API рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдХреА.
- *.cds - рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░рд╛рдЪреНрдпрд╛ рд╕рдВрдХрд▓рд┐рдд рдЖрд╡реГрддреНрддреНрдпрд╛
- *.json рдлрд╛рдЗрд▓реНрд╕ - рд╣рд╛рдпрдкрд░рд▓реЗрдЬрд░ рдлреЕрдмреНрд░рд┐рдХ API рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓реНрд╕рдЪреА рдЙрджрд╛рд╣рд░рдгреЗ
рд╣реА рдлрдХреНрдд рд╕реБрд░реБрд╡рд╛рдд рдЖрд╣реЗ!
рд╕реНрддреНрд░реЛрдд: www.habr.com