Blockchain -Corda框架研究一 cordapp-example 學習筆記

Corda是Blockchain企業框架之一。

相關鏈接:https://docs.corda.net/

 國內:https://cncorda.com/

 

這周開始準備學習Corda, 首先先研究一下https://github.com/corda/samples  裏面的例子。

這是Git下載好的代碼列表

這個例子是支持java和kotlin

以Kotlin爲例

這裏包括Contract 智能合約和State 代碼

IOUContract.kt 主要寫智能合約,包括一些校驗

IOUState.kt  定義一個賬本一個事實,

IOUSchema.kt 是一個數據庫的一個映射

 

因爲公司的項目是基於Kotlin ,所以需要刪除java build

  • 刪除java build 在gradle 

1 cordapp-example\settings.gradle

   

//include 'contracts-java'
//include 'workflows-java'
include 'contracts-kotlin'
include 'workflows-kotlin'
include 'clients'

 

2  cordapp-example\clients\build.gradle

//    cordapp project(":contracts-java")
//    cordapp project(":workflows-java")
    cordapp project(":contracts-kotlin")
    cordapp project(":workflows-kotlin")

這樣Java 就不會在gradle編譯了 。

 

  • 打包運行 gradlew.bat deployNodes

成功以後

 

  •   運行節點   runnodes

會有4個java進程起來 

分別是PartA  PartB PartC Notary

 

Corda 默認的數據庫是H2 ,我們可以連接 Corda H2數據庫。

 

      需要更改三個地方,  persistence 是Corda默認的名字,需要Copy到對應目錄裏(Users下)

       H2數據庫默認名字是sa 密碼爲空

其中藍色區域是corda  IOUSchema.kt對應的表結構,

因爲Corda 裏面數據庫是ORM框架,可以更改其他數據庫比如SQL Server ,PostgreSQL,以後會更新博客怎麼更改數據庫在Corda上。

最後,這裏面Client文件夾是Kotlin的springboot工程, 可以用網頁形式訪問。但是用的angular 是google的域名,需要提前替換。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Example CorDapp</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
          integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css"
          integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
    <script src="https://code.jquery.com/jquery-3.1.1.min.js">
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
            integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
            crossorigin="anonymous"></script>
    <script src="js/angular.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/2.2.0/ui-bootstrap-tpls.min.js"></script>
    <script src="js/angular-module.js"></script>
</head>
<body ng-app="demoAppModule" ng-controller="DemoAppController as demoApp">
<nav class="navbar navbar-default">
    <div class="container-fluid">
        <div class="navbar-header">
            <a class="navbar-brand" href="#">{{demoApp.thisNode}}</a>
        </div>
        <button ng-click="demoApp.openModal()" type="button" class="btn btn-primary navbar-btn">Create IOU</button>
    </div>
</nav>
<script type="text/ng-template" id="demoAppModal.html">
    <div class="modal-header">
        <h4 class="modal-title">Add new IOU</h4>
    </div>
    <form>
        <div class="modal-body">
            <div class="form-group">
                <label for="counterparty" class="control-label">Counter-party:</label>
                <select ng-model="modalInstance.form.counterparty" class="form-control" id="counterparty"
                        ng-options="peer as peer for peer in modalInstance.peers">
                </select>
            </div>
            <div class="form-group">
                <label for="value" class="control-label">Value (Int):</label>
                <input type="text" ng-model="modalInstance.form.value" class="form-control" id="value">
            </div>
            <div ng-show="modalInstance.formError" class="form-group">
                <div class="alert alert-danger" role="alert">
                    <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
                    <span class="sr-only">Error:</span>
                    Enter valid IOU parameters
                </div>
            </div>
        </div>
        <div class="modal-footer">
            <button ng-click="modalInstance.cancel()" type="button" class="btn btn-default">Close</button>
            <button ng-click="modalInstance.create()" type="button" class="btn btn-primary">Create IOU</button>
        </div>
    </form>
</script>
<script type="text/ng-template" id="messageContent.html">
    <div class="modal-body" id="modal-body">
        {{ modalInstanceTwo.message }}
    </div>
</script>

<div class="row">
    <div class="col-md-1"></div>
    <div class="col-md-10">
        <div class="panel-group" id="accordion">
            <div class="panel">
                <div class="panel-primary">
                    <div class="panel-heading">
                        <h4 class="panel-title">
                            Recorded IOUs:
                        </h4>
                    </div>
                </div>
                <div>
                    <div ng-show="!demoApp.ious.length" class="panel-body">Use the "Create IOU" button to send an IOU to a peer.</div>
                    <div ng-repeat="iou in demoApp.ious" class="panel panel-default">
                        <div class="panel-body">
                            <ul>
                                <li>Lender: {{iou.lender}}</li>
                                <li>Borrower: {{iou.borrower}}</li>
                                <li>Value: {{iou.value}}</li>
                            </ul>
                        </div>
                    </div>
                </div>
            </div>
            <div class="panel">
                <div class="panel-primary">
                    <div class="panel-heading">
                        <h4 class="panel-title">
                            My IOUs:
                        </h4>
                    </div>
                </div>
                <div>
                    <div ng-repeat="iou in demoApp.myious" class="panel panel-default">
                        <div class="panel-body">
                            <ul>
                                <li>Lender: {{iou.lender}}</li>
                                <li>Borrower: {{iou.borrower}}</li>
                                <li>Value: {{iou.value}}</li>
                            </ul>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="col-md-1"></div>
</div>

</body>
</html>

 

angular.min.js需要自己下載放在目錄裏。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章