{"id":33870,"date":"2019-10-31T21:55:08","date_gmt":"2019-10-31T18:55:08","guid":{"rendered":"https:\/\/prohoster.info\/blog\/corda-open-source-blokchejn-dlya-biznesa\/"},"modified":"2019-10-31T21:55:08","modified_gmt":"2019-10-31T18:55:08","slug":"corda-open-source-blokchejn-dlya-biznesa","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/corda-open-source-blokchejn-dlya-biznesa","title":{"rendered":"Corda \u2014 open source blockchain for business","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/corda\/corda\">Corda<\/a><\/noindex> is a distributed ledger for storing, managing, and synchronizing financial obligations among various financial organizations.<br \/>\n<img decoding=\"async\" alt=\"Corda \u2014 open source blockchain for business\" src=\"\/wp-content\/uploads\/2019\/05\/4dd7c4b5e177c7fdc59eef739a052bb3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex>Corda has quite good documentation with video lectures available <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.corda.net\/index.html\">here<\/a><\/noindex>. I will briefly describe how Corda is structured internally.<\/p>\n<p>Let's consider the main features of Corda and its uniqueness among other blockchains:<\/p>\n<ul>\n<li>Corda does not have its own cryptocurrency. <\/li>\n<li>Corda does not use the concept of mining and the Proof-of-Work system.<\/li>\n<li>Data transfer occurs only between participants of the transaction\/contract. There is no global broadcasting to all network nodes. <\/li>\n<li>There is no central controller managing all transactions.<\/li>\n<li>Corda supports various consensus mechanisms.<\/li>\n<li>Consensus is achieved among participants at the level of individual agreements\/contracts, not at the level of the entire system.<\/li>\n<li>A transaction is confirmed only by the participants relevant to it.<\/li>\n<li>Corda offers a direct connection between formal human legal language and smart contract code.<\/li>\n<\/ul>\n<p><\/p>\n<h3>The ledger<\/h3>\n<p>\nThe concept of a ledger in Corda is subjective. There is no single central data repository. Instead, each node maintains its own database of known facts.<\/p>\n<p>For example, imagine a network of 5 nodes where the circle represents a fact known to the node.<\/p>\n<p><img decoding=\"async\" alt=\"Corda \u2014 open source blockchain for business\" src=\"\/wp-content\/uploads\/2019\/05\/538ca02bcd0488dbcf626d4e9bc704f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAs we can see, Ed, Carl, and Demi know about fact 3, whereas Alice and Bob are not even aware of it. Corda guarantees that common facts are preserved in the database of each node, ensuring that the data is identical. <\/p>\n<h3>States<\/h3>\n<p>\nA state is an <i>immutable<\/i> object representing a fact known to one or several nodes of the network at a specific moment in time.<\/p>\n<p>States can store arbitrary data, such as stocks, bonds, loans, and identification information.<\/p>\n<p>For example, the following state represents an IOU \u2014 an agreement that Alice owes Bob an amount X:<\/p>\n<p><img decoding=\"async\" alt=\"Corda \u2014 open source blockchain for business\" src=\"\/wp-content\/uploads\/2019\/05\/19375664e05d42eb646dfbcab2c0638a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nThe lifecycle of a fact over time is represented by a sequence of states. When it is necessary to update the current state, we create a new one and mark the current one as historic.<\/p>\n<p><img decoding=\"async\" alt=\"Corda \u2014 open source blockchain for business\" src=\"\/wp-content\/uploads\/2019\/05\/f3ab2bd8a7c4cb6df40f003aa88cc0fd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Transactions<\/h3>\n<p>\nTransactions are proposals to update the ledger. They are not broadcasted to all ledger participants and are available only to those network participants who have a legitimate right to view and manage them.<\/p>\n<p>A transaction will be added to the ledger if it:<\/p>\n<ul>\n<li>contractually valid<\/li>\n<li>signed by all necessary participants<\/li>\n<li>does not contain double spends<\/li>\n<\/ul>\n<p>\nCorda uses the UTXO (unspent transaction output) model, in which each state of the ledger is immutable. <\/p>\n<p>When creating a transaction, the output state of the previous transaction is passed in by hash and index.<\/p>\n<p><img decoding=\"async\" alt=\"Corda \u2014 open source blockchain for business\" src=\"\/wp-content\/uploads\/2019\/05\/f26706fc6ae514926ab7cc3d1e18aef7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nTransaction lifecycle:<\/p>\n<ul>\n<li>Creation (At this point, the transaction is merely a proposal to update the ledger) <\/li>\n<li>Collecting signatures (Required participants of the transaction approve the update proposal by adding their signatures to the transaction)<\/li>\n<li>Committing the transaction to the ledger<\/li>\n<\/ul>\n<p>\nAfter adding the transaction to the ledger, the input states are marked as historical and cannot be used in future transactions.<\/p>\n<p><img decoding=\"async\" alt=\"Corda \u2014 open source blockchain for business\" src=\"\/wp-content\/uploads\/2019\/05\/b2525d6861369163bedddcc4662d2f5b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nIn addition to input and output states, a transaction can contain:<\/p>\n<ul>\n<li>Commands (transaction parameter indicating the transaction's target) <\/li>\n<li>Attachments (holiday calendar, currency converter) <\/li>\n<li>Time windows (expiry period)<\/li>\n<li>Notary (special network participants validating transactions) <\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Corda \u2014 open source blockchain for business\" src=\"\/wp-content\/uploads\/2019\/05\/776d3d738f344acc65182e5dc67d9673.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Contracts<\/h3>\n<p>\nWhen we talk about the validity of a transaction, we refer not only to the presence of necessary signatures but also to the validity in relation to the contract. Each transaction is associated with a contract that accepts it and validates the input and output states. A transaction is considered valid only if all its states are valid.<\/p>\n<p>Contracts in Corda are written in any JVM language (e.g., Java, Kotlin).<\/p>\n<pre><code class=\"kotlin\">class CommercialPaper : Contract {\n    override fun verify(tx: LedgerTransaction) {\n        TODO()\n    }\n}\n<\/code><\/pre>\n<p>\nMust inherit from the class <i>Contract<\/i> and override the method <i>verify<\/i>. In case of an invalid transaction, an exception is thrown.<\/p>\n<p>Transaction validation must be deterministic, i.e., a contract must either always accept or reject a transaction. Consequently, the validity of a transaction cannot depend on time, random numbers, node files, etc.<\/p>\n<p>In Corda, contracts execute in a so-called sandbox\u2014a slightly modified JVM that guarantees deterministic execution of contracts. <\/p>\n<h3>Threads<\/h3>\n<p>\nTo automate communication between network nodes, flows have been added.<\/p>\n<p>A flow is a sequence of steps that instructs a node on how to perform a specific ledger update, when to sign, and validate the transaction.<\/p>\n<p><img decoding=\"async\" alt=\"Corda \u2014 open source blockchain for business\" src=\"\/wp-content\/uploads\/2019\/05\/f23038fa73013d5cb2b3b980cd43a326.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSometimes it takes hours or days for a transaction to be signed by all parties and enter the ledger. What happens if a node involved in the transaction goes offline? Flows have checkpoints where the flow state is recorded in the node\u2019s database. When the node is restored online, it continues from where it left off.<\/p>\n<h3>Consensus<\/h3>\n<p>\nTo enter the ledger, a transaction must achieve two types of consensus: on validity and on uniqueness.<\/p>\n<p>The decision on the validity of a transaction is made only by the parties directly involved in it.<\/p>\n<p>Notary nodes check the transaction for uniqueness, preventing double spending.<\/p>\n<p>Let\u2019s imagine that Bob has $100, and he wants to send $80 to Charlie and $70 to Dan, using the same input state. <\/p>\n<p><img decoding=\"async\" alt=\"Corda \u2014 open source blockchain for business\" src=\"\/wp-content\/uploads\/2019\/05\/159a5b0f2a5c1e38f52d7739707efa8a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSuch a trick will not work in Corda. Although the transaction will pass the validity check, the uniqueness check will fail. <\/p>\n<h3>Conclusion<\/h3>\n<p>\nCorda, developed by the R3 blockchain consortium, is not a pure example of blockchain technology. Corda is a sufficiently specialized tool for financial organizations.<br \/>\n<br \/>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/452258\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>Corda \u2014 \u044d\u0442\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 Ledger \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0445 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u043c\u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f\u043c\u0438. \u0423 Corda \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0441 \u0432\u0438\u0434\u0435\u043e-\u043b\u0435\u043a\u0446\u0438\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0437\u0434\u0435\u0441\u044c. \u042f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u043a\u0440\u0430\u0442\u043a\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d Corda \u0432\u043d\u0443\u0442\u0440\u0438. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 Corda \u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0435\u0433\u043e \u0441\u0440\u0435\u0434\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u043e\u0432: \u0423 Corda \u043d\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043b\u044e\u0442\u044b. Corda \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e \u043c\u0430\u0439\u043d\u0438\u043d\u0433\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":25536,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-33870","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"Corda \u2014 \u044d\u0442\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 Ledger \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0445 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u043c\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/corda-open-source-blokchejn-dlya-biznesa\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Corda \u2014 open source \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d \u0434\u043b\u044f \u0431\u0438\u0437\u043d\u0435\u0441\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"Corda \u2014 \u044d\u0442\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 Ledger \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0445 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u043c\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/corda-open-source-blokchejn-dlya-biznesa\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:55:08+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:55:08+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Corda \u2014 open source blockchain for business | ProHoster","description":"Corda is a distributed ledger for storing, managing, and synchronizing financial obligations among different financial entities.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/corda-open-source-blokchejn-dlya-biznesa","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Corda \u2014 open source \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d \u0434\u043b\u044f \u0431\u0438\u0437\u043d\u0435\u0441\u0430 | ProHoster","og:description":"Corda \u2014 \u044d\u0442\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 Ledger \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0445 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u043c\u0438.","og:url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/corda-open-source-blokchejn-dlya-biznesa","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:55:08+00:00","article:modified_time":"2019-10-31T18:55:08+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"33870","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 17:02:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:32:26","updated":"2026-01-21 17:02:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/33870","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=33870"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/33870\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/25536"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=33870"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=33870"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=33870"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}