Skip to content

Commit

Permalink
AUTO: Sync ScalarDL docs (versioned) to docs site repo
Browse files Browse the repository at this point in the history
  • Loading branch information
josh-wong committed Feb 21, 2024
1 parent 6fbac88 commit cd15dc3
Show file tree
Hide file tree
Showing 30,129 changed files with 9,544,113 additions and 0 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
6 changes: 6 additions & 0 deletions docs/ja-jp/3.4/applications/escrow-payment/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#
# https://help.github.com/articles/dealing-with-line-endings/
#
# These are explicitly windows files and should use crlf
*.bat text eol=crlf

36 changes: 36 additions & 0 deletions docs/ja-jp/3.4/applications/escrow-payment/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

# custom
cfssl
build
.idea


# Ignore Gradle project-specific cache directory
.gradle

.settings/
bin/

75 changes: 75 additions & 0 deletions docs/ja-jp/3.4/applications/escrow-payment/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
SHELL := /bin/bash

##### BUILD
.PHONY: build
build:
@echo "Building ScalarDL escrow demo CLI"
@./gradlew build

#### ScalarDL
.PHONY: register-cert assemble register-contracts clear register-all

register-all: register-cert register-contracts

register-cert:
@echo "Registering certificate ..."
@client/bin/register-cert --properties client.properties

assemble: clear
@echo "Building contracts ..."
@./gradlew assemble

register-contracts: assemble
@echo "Registering contracts ..."
@client/bin/register-contract --properties client.properties --contract-id AddAccount_foo --contract-binary-name com.ypeckstadt.escrow.contract.account.AddAccount --contract-class-file build/classes/java/main/com/ypeckstadt/escrow/contract/account/AddAccount.class
@client/bin/register-contract --properties client.properties --contract-id AddItem_foo --contract-binary-name com.ypeckstadt.escrow.contract.item.AddItem --contract-class-file build/classes/java/main/com/ypeckstadt/escrow/contract/item/AddItem.class
@client/bin/register-contract --properties client.properties --contract-id AddOrder_foo --contract-binary-name com.ypeckstadt.escrow.contract.order.AddOrder --contract-class-file build/classes/java/main/com/ypeckstadt/escrow/contract/order/AddOrder.class
@client/bin/register-contract --properties client.properties --contract-id CancelOrder_foo --contract-binary-name com.ypeckstadt.escrow.contract.order.CancelOrder --contract-class-file build/classes/java/main/com/ypeckstadt/escrow/contract/order/CancelOrder.class
@client/bin/register-contract --properties client.properties --contract-id ChargeAccount_foo --contract-binary-name com.ypeckstadt.escrow.contract.account.ChargeAccount --contract-class-file build/classes/java/main/com/ypeckstadt/escrow/contract/account/ChargeAccount.class
@client/bin/register-contract --properties client.properties --contract-id SetOrderToReceivedStatus_foo --contract-binary-name com.ypeckstadt.escrow.contract.order.SetOrderToReceivedStatus --contract-class-file build/classes/java/main/com/ypeckstadt/escrow/contract/order/SetOrderToReceivedStatus.class
@client/bin/register-contract --properties client.properties --contract-id SetOrderToShippedStatus_foo --contract-binary-name com.ypeckstadt.escrow.contract.order.SetOrderToShippedStatus --contract-class-file build/classes/java/main/com/ypeckstadt/escrow/contract/order/SetOrderToShippedStatus.class
@client/bin/register-contract --properties client.properties --contract-id ViewAccountHistory_foo --contract-binary-name com.ypeckstadt.escrow.contract.account.ViewAccountHistory --contract-class-file build/classes/java/main/com/ypeckstadt/escrow/contract/account/ViewAccountHistory.class
@client/bin/register-contract --properties client.properties --contract-id ViewItem_foo --contract-binary-name com.ypeckstadt.escrow.contract.item.ViewItem --contract-class-file build/classes/java/main/com/ypeckstadt/escrow/contract/item/ViewItem.class
@client/bin/register-contract --properties client.properties --contract-id DebitEscrowAccount_foo --contract-binary-name com.ypeckstadt.escrow.contract.account.DebitEscrowAccount --contract-class-file build/classes/java/main/com/ypeckstadt/escrow/contract/account/DebitEscrowAccount.class
@client/bin/register-contract --properties client.properties --contract-id CreditEscrowAccount_foo --contract-binary-name com.ypeckstadt.escrow.contract.account.CreditEscrowAccount --contract-class-file build/classes/java/main/com/ypeckstadt/escrow/contract/account/CreditEscrowAccount.class
@client/bin/register-contract --properties client.properties --contract-id CreditAccount_foo --contract-binary-name com.ypeckstadt.escrow.contract.account.CreditAccount --contract-class-file build/classes/java/main/com/ypeckstadt/escrow/contract/account/CreditAccount.class
@client/bin/register-contract --properties client.properties --contract-id DebitAccount_foo --contract-binary-name com.ypeckstadt.escrow.contract.account.DebitAccount --contract-class-file build/classes/java/main/com/ypeckstadt/escrow/contract/account/DebitAccount.class
@client/bin/register-contract --properties client.properties --contract-id ViewOrderHistory_foo --contract-binary-name com.ypeckstadt.escrow.contract.order.ViewOrderHistory --contract-class-file build/classes/java/main/com/ypeckstadt/escrow/contract/order/ViewOrderHistory.class
@client/bin/register-contract --properties client.properties --contract-id ViewEscrowAccountHistory_foo --contract-binary-name com.ypeckstadt.escrow.contract.escrowAccount.ViewEscrowAccountHistory --contract-class-file build/classes/java/main/com/ypeckstadt/escrow/contract/escrowAccount/ViewEscrowAccountHistory.class

clear:
@rm -rf build


#### Scenario test
.PHONY: run-complete-order-scenario run-cancel-order-scenario all
run-complete-order-scenario:
@./gradlew run --args="account add -id buyer_1 -n Alfred"
@./gradlew run --args="account add -id seller_1 -n Yves"
@./gradlew run --args="account charge -id buyer_1 -a 5000"
@./gradlew run --args="item add -id item_1 -n bicycle -p 6000 -s seller_1"
@./gradlew run --args="order add -id order_1 -b buyer_1 -i item_1"
@./gradlew run --args="account charge -id buyer_1 -a 5000"
@./gradlew run --args="order add -id order_1 -b buyer_1 -i item_1"
@./gradlew run --args="order shipped -id order_1 -s seller_1"
@./gradlew run --args="order received -id order_1 -b buyer_1"
@./gradlew run --args="order view -id order_1"
@./gradlew run --args="account view -id buyer_1"
@./gradlew run --args="account view -id seller_1"
@./gradlew run --args="escrow view -b buyer_1 -s seller_1"

run-cancel-order-scenario:
@./gradlew run --args="account add -id buyer_1 -n Alfred"
@./gradlew run --args="account add -id seller_1 -n Yves"
@./gradlew run --args="account charge -id buyer_1 -a 50000"
@./gradlew run --args="item add -id item_1 -n bicycle -p 10000 -s seller_1"
@./gradlew run --args="order add -id order_1 -b buyer_1 -i item_1"
@./gradlew run --args="account view -id buyer_1"
@./gradlew run --args="order cancel -id order_1 -a buyer_1"
@./gradlew run --args="order view -id order_1"
@./gradlew run --args="account view -id buyer_1"





228 changes: 228 additions & 0 deletions docs/ja-jp/3.4/applications/escrow-payment/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,228 @@
{% include scalardl/end-of-support-ja-jp.html %}
{% include common/translation-ja-jp.html %}

# ScalarDL エスクロー支払い CLI

以下は、[ScalarDL](https://github.com/scalar-labs/scalardl) を試してテストするための簡単な Java CLI アプリケーションです。 CLI フレームワークとして PicoCLI が使用されます。

ScalarDL には複数の言語のサポートと SDK があります。 この例ではJAVAが使用されています。

これは単なるサンプル プロジェクトであるため、すべてのコマンドは Gradle 経由で実行できます。 これは本番環境に対応した例ではなく、学習資料としてのみ提供されています。

どのコマンドが実行されているかを確認するには、前述の Makefile コマンドと ScalarDL の公式ドキュメントを確認してください。

## 導入

### 預託

口座 A から口座 B に資金を直接送金する代わりに、仲介口座が導入されます。 両当事者が取引の完了に同意するまで、資金はこの仲介口座にロックされます。 何か問題が発生した場合、問題が解決されるまで買い手と売り手の両方が資金にアクセスできなくなります。

以下は典型的なエスクロー支払いフローです。

- アカウント A を持つ登録購入者は、アカウント B を持つ登録販売者から商品を購入します。
- 注文エントリが作成され、注文は `open` ステータスに設定されます。
- 両当事者間でエスクローアカウントが作成されます。
- アカウント A に入金され、資金がエスクロー口座に移動されます。
- 販売者は注文を更新し、パッケージの発送を通知します。
- 注文が更新され、 `shipped` ステータスに設定されます。
- パッケージを受け取った後、購入者は注文を更新し、受信済みとしてマークします。
- エスクロー口座に入金され、資金が口座 B に移動されます。
- 注文はクローズされ、ステータスが `complete` とマークされます。

注文のキャンセルは可能ですが、注文がまだ `open` ステータスにある場合に限ります。 後に
商品が発送された後、現在の実装では注文をキャンセルすることはできません。

## 特徴

この CLI アプリケーションは、エスクロー支払いフローをシミュレートするための最も重要なアクションを提供します。 データの検索と監視のために追加のアクションがサポートされています。

次のアクションがサポートされています。

**アカウント**

- 新しいアカウントを登録する
- 資金の追加、チャージ、アカウント
- アカウント履歴の表示

**アイテム**

- 新しいアイテムを登録する
- アイテムの詳細を表示

**注文**

- 新しい注文を作成する
- 注文を発送済みとしてマークする
- 受領済みとしてマークして注文する (注文を完了する)
- 注文をキャンセルする
- 注文履歴の表示

**エスクローアカウント**

- エスクローアカウント履歴の表示

## 前提条件

- Docker
- Makefile
- Java

## 設定

### ScalarDL

ScalarDL サーバーを起動するコードは、このリポジトリには含まれていません。 ScalarDL をすぐに起動して実行するには、[次のリポジトリ](https://github.com/scalar-labs/scalardl-samples) のクローンを作成し、ScalarDL の使用を開始するためのコマンドに従ってください。

### 証明書

証明書の例が使用されていますが、例としては十分です。 証明書は `make register-certificate` 経由でロードできます。

### 契約

すべての契約名には接尾辞が追加されます。 これは証明書所有者の名前で、この場合は `foo` です。 これは必須ではなく、コントラクト名が一意であることを確認するためにのみ行われます。

コントラクトは `make register-contracts` を通じてロードできます。

### クライアント SDK

Java クライアント SDK が動作するには、 `client.properties` ファイルが必要です。 現在、ScalarDL サンプル プロジェクトと同じ設定が使用されています。

### テストシナリオ

実際の支払いと注文キャンセルのフローを確認するために、2 つのテスト シナリオの例が提供されています。

シナリオは、`make run-complete-order-scenario` および `make run-cancel-order-scenario` によって実行できます。

## 使用法

### 建てる

アプリケーションは、`./gradlew build` を介して、または `make build` Makefile コマンドを実行することによってビルドできます。

### CLI コマンド

#### アカウント

CLI を介したアカウントの管理。

##### アカウントを作成する

文字列で何でもよい `id` を指定して、新しいアカウントを作成します。 アカウントの `balance` は 0 に設定され、`created_at` は現在のタイムスタンプに自動的に設定されます。

*コマンド*

```
./gradlew run --args="account add -id <account id> -n <name>"
```

##### アカウント履歴の表示

アカウント履歴を取得します。

*コマンド*

```
./gradlew run --args="account view -id <account id>"
```

##### チャージアカウント

アカウントの残高に資金を追加します。

*コマンド*

```
./gradlew run --args="account charge -id <account id> -a <amount>"
```

#### アイテム

CLI を介したアイテムの管理。

##### アイテムの作成

`id``price``seller` (アカウント ID)、およびアイテムの `name` を指定して、新しいアイテムを作成します。

*コマンド*

```
./gradlew run --args="item add -id <item id> -p <price> -s <seller account id -n <item name>"
```

##### アイテムの表示

アイテムの詳細を見る

*コマンド*

```
./gradlew run --args="item view -id <item id>"
```

#### 注文

CLI を介した注文の管理。

##### 注文の作成

`id``item id`、およびアカウント ID である `buyer` を指定して、新しい注文を作成します。

*コマンド*

```
./gradlew run --args="order add -id <order id> -b <buyer account id> -i <item id>"
```

##### 注文をキャンセルする

現在 `open` ステータスにある注文をキャンセルします。 他の州では注文をキャンセルできなくなります。 `account id` は必須であり、検証されます。 注文が指定されたアカウントに属していない場合、注文をキャンセルすることはできません。

*コマンド*

```
./gradlew run --args="order cancel -id <order id> -a <account id>"
```

##### 注文アイテムを発送済みとしてマークする

販売者として注文を更新し、商品が発送されたことを購入者に通知します。

*コマンド*

```
./gradlew run --args="order shipped -id <order id> -s <seller account id>"
```

##### 注文アイテムを受領済みとしてマークする

購入者として注文を更新し、商品が受け取られたことを販売者に通知します。 ご注文が完了となります。

*コマンド*

```
./gradlew run --args="order received -id <order id> -b <buyer account id>"
```

##### 注文履歴の表示

1 つの注文の履歴を表示します。

*コマンド*

```
./gradlew run --args="order view -id <order id>"
```

#### エスクローアカウント

CLI を介したエスクロー アカウントの管理。

##### エスクローアカウント履歴の表示

買い手と売り手の間の特定のエスクロー口座のアクティビティと更新履歴を表示します

*コマンド*

```
./gradlew run --args="escrow view -b <buyer account id> -s <seller account id>"
```
46 changes: 46 additions & 0 deletions docs/ja-jp/3.4/applications/escrow-payment/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/*
* This file was generated by the Gradle 'init' task.
*
* This generated file contains a sample Java application project to get you started.
* For more details take a look at the 'Building Java & JVM projects' chapter in the Gradle
* User Manual available at https://docs.gradle.org/7.1/userguide/building_java_projects.html
*/

plugins {
// Apply the application plugin to add support for building a CLI application in Java.
id 'application'
}

repositories {
// Use Maven Central for resolving dependencies.
mavenCentral()
}

dependencies {
// Use JUnit test framework.
testImplementation 'junit:junit:4.13.2'

// This dependency is used by the application.
implementation 'com.google.guava:guava:30.1-jre'
implementation group: 'info.picocli', name: 'picocli', version: '4.6.1'
implementation group: 'com.scalar-labs', name: 'scalardl-java-client-sdk', version: '3.0.1'
implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.8.2'
implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.8.2'

testImplementation group: 'org.assertj', name: 'assertj-core', version: '3.14.0'
testImplementation group: 'org.mockito', name: 'mockito-core', version: '3.2.0'
testImplementation group: 'io.cucumber', name: 'cucumber-java', version: '5.6.0'
testImplementation group: 'io.cucumber', name: 'cucumber-junit', version: '5.6.0'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.1'
testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.3.1'
testImplementation 'org.hashids:hashids:1.0.3'
}

application {
// Define the main class for the application.
mainClass = 'com.ypeckstadt.escrow.Main'
}

test {
useJUnitPlatform()
}
Loading

0 comments on commit cd15dc3

Please sign in to comment.