Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
30 changes: 15 additions & 15 deletions content/en/archived-docs/apps/bankinabox/user-interface/how-to.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ Follow these steps to create a new customer profile.
When the customer profile is created, they will not have any accounts - you will have to create them. Learn how under [Creating accounts](#create-a-current-account).
{{< /note >}}

{{< figure alt="Create customer profile" width=80% zoom="/en/gifs/create-customer-biab-1.0.gif" >}}
{{< figure alt="Create customer profile" width=80% src="/en/gifs/create-customer-biab-1.0.gif" >}}


### Create a Current account
Expand All @@ -93,7 +93,7 @@ When the customer profile is created, they will not have any accounts - you will

7. When an account is created, it is in **PENDING** status. This must be changed to **ACTIVE** for a customer to be able to interact with and use the account. See [Change an account status](#change-an-account-status) for more information.

{{< figure alt="Create account" width=80% zoom="/en/gifs/create-current-account-biab-1.0.gif" >}}
{{< figure alt="Create account" width=80% src="/en/gifs/create-current-account-biab-1.0.gif" >}}

### Create a Savings account

Expand Down Expand Up @@ -139,7 +139,7 @@ An account has three statuses: **PENDING**, **ACTIVE**, and **SUSPENDED**. When

If the account needs to be suspended, follow the same steps but select **SUSPENDED**.

{{< figure alt="Set account status" width=80% zoom="/en/gifs/set-account-status-biab-1.0.gif" >}}
{{< figure alt="Set account status" width=80% src="/en/gifs/set-account-status-biab-1.0.gif" >}}


### Assign or revoke a user role
Expand All @@ -162,7 +162,7 @@ To assign a user role, follow these steps:

5. Click **Revoke**. A message will appear indicating that the user role was assigned successfully.

{{< figure alt="Assign role" width=80% zoom="/en/gifs/assign-a-role-biab-1.0.gif" >}}
{{< figure alt="Assign role" width=80% src="/en/gifs/assign-a-role-biab-1.0.gif" >}}

#### Revoke a user role

Expand All @@ -178,7 +178,7 @@ To revoke a user role, follow these steps:

5. Click **Save**. A message will appear indicating that the user role was revoked successfully.

{{< figure alt="Revoke role" width=80% zoom="/en/gifs/revoke-role-biab-1.0.gif" >}}
{{< figure alt="Revoke role" width=80% src="/en/gifs/revoke-role-biab-1.0.gif" >}}

### Issue a loan

Expand All @@ -194,7 +194,7 @@ Once the account has been set to **ACTIVE**, you will have the ability to issue

A loan account is created when a loan has been issued successfully.

{{< figure alt="Issue loan" width=80% zoom="/en/gifs/issue-loan-biab-1.0.gif" >}}
{{< figure alt="Issue loan" width=80% src="/en/gifs/issue-loan-biab-1.0.gif" >}}

### Approve overdrafts

Expand All @@ -214,7 +214,7 @@ To approve an overdraft, follow these steps.
Overdrafts can be approved whether the account is **PENDING**, **ACTIVE**, or **SUSPENDED**.
{{< /note >}}

{{< figure alt="Approve overdraft" width=80% zoom="/en/gifs/approve-overdraft-biab-1.0.gif" >}}
{{< figure alt="Approve overdraft" width=80% src="/en/gifs/approve-overdraft-biab-1.0.gif" >}}


### Deposit money to an account
Expand All @@ -229,7 +229,7 @@ Follow these steps to deposit money to a customer account.

4. Click **Save**. You will receive a message indicating that the deposit was successful.

{{< figure alt="Deposit" width=80% zoom="/en/gifs/deposit-biab-1.0.gif" >}}
{{< figure alt="Deposit" width=80% src="/en/gifs/deposit-biab-1.0.gif" >}}


### Register as a user on Bank in a Box
Expand All @@ -250,7 +250,7 @@ You must be registered as a **Customer** or **Admin** on Bank in a Box to perfor

5. Click **Save**. A message will appear indicating that you have registered successfully.

{{< figure alt="Register user" width=80% zoom="/en/gifs/register-user-customer-biab-1.0.gif" >}}
{{< figure alt="Register user" width=80% src="/en/gifs/register-user-customer-biab-1.0.gif" >}}


### Update customer profile
Expand Down Expand Up @@ -283,7 +283,7 @@ An **Admin user** can set an account's **Withdrawal daily limit** or **Transfer

2. Click **Save** when you've entered the desired limits. A message will appear indicating that the limits have been saved successfully.

{{< figure alt="Set withdrawal and transfer limits - admin" width=80% zoom="/en/gifs/set-limits-admin-biab-1.0.gif" >}}
{{< figure alt="Set withdrawal and transfer limits - admin" width=80% src="/en/gifs/set-limits-admin-biab-1.0.gif" >}}


## Customer tasks
Expand All @@ -308,12 +308,12 @@ Follow these steps to create a new intrabank payment.

6. Click **Save**. You will receive a notification indicating that the payment was created successfully. You will also receive notifications indicating any changes in your account balances.

{{< figure alt="Create intrabank payment" width=80% zoom="/en/gifs/create-intrabank-payment-biab-1.0.gif" >}}
{{< figure alt="Create intrabank payment" width=80% src="/en/gifs/create-intrabank-payment-biab-1.0.gif" >}}

After making a payment, you can view the details of this transaction on the Transactions screen.


{{< figure alt="View transaction" width="800" width=80% zoom="/en/gifs/view-transaction-biab-1.0.gif" >}}
{{< figure alt="View transaction" width="800" width=80% src="/en/gifs/view-transaction-biab-1.0.gif" >}}


### Create a recurring payment
Expand All @@ -337,7 +337,7 @@ Follow these steps to create a recurring payment:

3. You will be taken back to the **Recurring payments screen** where you will receive a message indicating that the recurring payment was created successfully.

{{< figure alt="Recurring payment" width=80% zoom="/en/gifs/create-recurring-payment-biab-1.0.gif" >}}
{{< figure alt="Recurring payment" width=80% src="/en/gifs/create-recurring-payment-biab-1.0.gif" >}}

{{< note >}}
This payment will not appear on the **Recurring payments screen** until the first iteration has occurred.
Expand Down Expand Up @@ -366,7 +366,7 @@ You must be registered as a Customer or Admin on Bank in a Box to perform tasks.

7. Click **Save**. A message will appear indicating that you have registered successfully.

{{< figure alt="Register user" width=80% zoom="/en/gifs/register-user-customer-biab-1.0.gif" >}}
{{< figure alt="Register user" width=80% src="/en/gifs/register-user-customer-biab-1.0.gif" >}}


### Update a customer profile
Expand Down Expand Up @@ -405,4 +405,4 @@ To set these limits as a **Customer**, follow these steps.

4. Click **Save**. You will be taken back to the Account page where you will receive a message indicating that the limits have been updated successfully.

{{< figure alt="Set withdrawal and transfer limits - customer" width=80% zoom="/en/gifs/set-limits-customer-biab-1.0.gif" >}}
{{< figure alt="Set withdrawal and transfer limits - customer" width=80% src="/en/gifs/set-limits-customer-biab-1.0.gif" >}}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ The facts that a node knows about are those that it is involved with. For exampl

Look at this example in a network with five nodes, where each numbered circle on an intersection represents a fact shared between two or more nodes.

{{< figure alt="ledger venn" width=80% zoom="/en/images/ledger-venn.png" >}}
{{< figure alt="ledger venn" width=80% src="/en/images/ledger-venn.png" >}}

The Venn diagram above represents 5 nodes (Alice, Bob, Carl, Demi, and Ed) as sets. Where the sets overlap are shared facts, such as those known by both Alice and Bob (1 and 7).

Expand All @@ -36,7 +36,7 @@ In the previous diagram, we could see that although Carl, Demi, and Ed are aware

You can think of this vault as being a database or simple table.

{{< figure alt="ledger table" width=80% zoom="/en/images/ledger-table.png" >}}
{{< figure alt="ledger table" width=80% src="/en/images/ledger-table.png" >}}

Where the rows are shared between nodes (facts 1 and 7 in this example), these are shared facts.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ and identity information.

For example, this state represents an IOU—an agreement that Alice owes Bob £5:

{{< figure alt="state" width=80% zoom="/en/images/state.png" >}}
{{< figure alt="state" width=80% src="/en/images/state.png" >}}

As well as any information about the fact itself, the state also contains a reference to
the <a href="key-concepts-contracts.md">**contract**</a> that governs the evolution of the state over time.
Expand All @@ -35,14 +35,14 @@ version of the state (which represents the updated fact) and mark the existing s

This sequence of state replacements gives you a full view of the evolution of the shared fact over time:

{{< figure alt="state sequence" width=80% zoom="/en/images/state-sequence.png" >}}
{{< figure alt="state sequence" width=80% src="/en/images/state-sequence.png" >}}

## The vault

Each node on the network maintains a **vault**—a database which tracks all the current and historic states that the node
is aware of and considers to be relevant (to itself):

{{< figure alt="vault simple" width=80% zoom="/en/images/vault-simple.png" >}}
{{< figure alt="vault simple" width=80% src="/en/images/vault-simple.png" >}}

The **ledger** is all the current (non-historic) states that a particular node is aware of.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ in the same way), when writing states you must add a `JsonRepresentable`.

Here's an example of a transaction, with two inputs and two outputs:

{{< figure alt="basic tx" width=80% zoom="/en/images/basic-tx.png" >}}
{{< figure alt="basic tx" width=80% src="/en/images/basic-tx.png" >}}

A transaction can contain any number of inputs, outputs, and references. They can:

Expand All @@ -52,24 +52,24 @@ Input state references are a combination of:

These input state references link transactions together, forming a *transaction chain*:

{{< figure alt="tx chain" width=80% zoom="/en/images/tx-chain.png" >}}
{{< figure alt="tx chain" width=80% src="/en/images/tx-chain.png" >}}

## Committing transactions

Initially, a transaction is just a *proposal* to update the ledger. It represents the future state of the ledger
that is desired by the transaction builders:

{{< figure alt="uncommitted tx" width=80% zoom="/en/images/uncommitted_tx.png" >}}
{{< figure alt="uncommitted tx" width=80% src="/en/images/uncommitted_tx.png" >}}

To become reality, the transaction must receive signatures from all *required signers*
(see **[commands](#commands)**). Each required signer appends their signature to the transaction to indicate that
they accept the proposal:

{{< figure alt="tx with sigs" width=80% zoom="/en/images/tx_with_sigs.png" >}}
{{< figure alt="tx with sigs" width=80% src="/en/images/tx_with_sigs.png" >}}

If all required signatures are gathered, the transaction becomes committed:

{{< figure alt="committed tx" width=80% zoom="/en/images/committed_tx.png" >}}
{{< figure alt="committed tx" width=80% src="/en/images/committed_tx.png" >}}

This means that the transaction's:

Expand Down Expand Up @@ -119,7 +119,7 @@ For example, a transaction where Alice uses a £5 cash payment to pay off £5 of
It also has two supporting attachments, and will only be notarised by NotaryClusterA if the notary pool
receives it within the specified time-window. This transaction would look like:

{{< figure alt="full tx" width=80% zoom="/en/images/full-tx.png" >}}
{{< figure alt="full tx" width=80% src="/en/images/full-tx.png" >}}

### Commands

Expand All @@ -144,7 +144,7 @@ listed in the commands, you get the list of the transaction’s required signers

Here's a visualization of this example.

{{< figure alt="commands" width=80% zoom="/en/images/commands.png" >}}
{{< figure alt="commands" width=80% src="/en/images/commands.png" >}}

### Attachments

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,9 @@ ERROR: for smoke-tests-network-bootstrapper Cannot create container for service

To resolve this, add the path to the **File sharing** options:

{{<
figure
{{< figure
src="docker-windows-file-sharing.png"
zoom="docker-windows-file-sharing.png"

width=80%
figcaption="Docker Windows File Sharing"
alt="docker windows file sharing"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,9 @@ element. However, there are a few rules:
* The value can only increase from one element to the next.
* Once a position has been created, it cannot be changed.

{{<
figure
{{< figure
src="1.png"
zoom="1.png"

width=80%
figcaption="Transactional elements with positions"
alt="Transactional elements with positions"
Expand All @@ -57,10 +56,9 @@ An HTTP-RPC client can make durable query polling requests to retrieve a sub-set
* Position where it left off or `-1` if this is the first polling request for a set of parameters.
* Maximum number of elements it is prepared to consume in the server response. `3` has been used in this example.

{{<
figure
{{< figure
src="2.png"
zoom="2.png"

width=80%
figcaption="First durable query polling request"
alt="First durable query polling request"
Expand All @@ -74,10 +72,9 @@ and processing server side responses at varying speeds.
A second client could make a separate polling request to the server using different parameters, resulting in a
different set of transactional elements:

{{<
figure
{{< figure
src="3.png"
zoom="3.png"

width=80%
figcaption="Second client durable query polling request"
alt="Second client durable query polling request"
Expand All @@ -90,10 +87,9 @@ server. Clients progress through the elements of the stream at their own pace.

Once the first client has processed the server's reply, it can make a second polling request:

{{<
figure
{{< figure
src="4.png"
zoom="4.png"

width=80%
figcaption="First client, second poll"
alt="First client, second poll"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,10 +178,9 @@ curl -u default -X GET "https://0.0.0.0:9090/api/v1/flowmanagerrpcops/listactive
You may find it useful to look at the `curl` commands generated by Swagger UI.
These become visible once you have sent a request in the `Try it out` section of an operation:

{{<
figure
{{< figure
src="tryitout.png"
zoom="tryitout.png"

width=80%
figcaption="curl commands in Swagger UI"
alt="curl commands in Swagger UI"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,9 @@ After you have deployed your CorDapp to a local Corda 5 network and the back-end

The Mission Mars CorDapp UI opens in your browser window.

{{<
figure
{{< figure
src="mission-mars-ui.PNG"
zoom="mission-mars-ui.PNG"

width=100%
figcaption="Mission Mars CorDapp UI"
alt="mission mars cordapp ui"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -330,19 +330,17 @@ Follow these steps to start up the UI:

4. Visit [http://localhost:3000/](http://localhost:3000/) to test the UI.

{{<
figure
{{< figure
src="solar-system-home.png"
zoom="solar-system-home.png"

width=100%
figcaption="Solar System CorDapp UI"
alt="Solar system CorDapp UI"
>}}

{{<
figure
{{< figure
src="solar-system-earth.png"
zoom="solar-system-earth.png"

width=100%
figcaption="Solar System CorDapp UI - Earth"
alt="Solar system CorDapp UI - Earth"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ measuring the throughput of a node, the test definition instructs all JMeter ser
thus saturating the RPC handler and driving the node as hard as possible. The test typically e.g. issues cash on the node
(no interaction with other nodes) or sends cash to a second node which requires sending P2P messages back and forth.

{{< figure alt="jmeter network overview" width=80% zoom="/en/jmeter-network-overview.png" >}}
{{< figure alt="jmeter network overview" width=80% src="/en/jmeter-network-overview.png" >}}

## Performance Tests

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ When JMeter runs a test using such a sampler, the `setupTest` method is called o
## `EmptyFlowSampler`
This sampler client has the class name `com.r3.corda.jmeter.EmptyFlowSampler` and starts the flow `com.r3.corda.enterprise.perftestcordapp.flows.EmptyFlow`. As the name suggests, the `call()` method of this flow is empty - it does not run any logic of its own. Invoking this flow goes through the whole overhead of invoking a flow via RPC without adding any additional flow work, and can therefore be used to measure the pure overhead of invoking a flow in a given set-up.

{{< figure alt="jmeter empty flow sampler" width=80% zoom="../resources/empty-flow-sampler.png" >}}
{{< figure alt="jmeter empty flow sampler" width=80% src="../resources/empty-flow-sampler.png" >}}

This sampler client requires the following minimal set of properties:
* `label`: A label for reporting results on this sampler - if in doubt what to put here, `${__samplername}` will fill in the sampler client classname.
Expand All @@ -67,7 +67,7 @@ This sampler client has the classname `com.r3.corda.jmeter.CashIssueSampler` and
`com.r3.corda.enterprise.perftestcordapp.flows.CashIssueFlow`. This flow will self-issue 1.1 billion cash tokens on the node it is running on and store it in the vault.


{{< figure alt="jmeter cash issue sampler" width=80% zoom="../resources/cash-issue-sampler.png" >}}
{{< figure alt="jmeter cash issue sampler" width=80% src="../resources/cash-issue-sampler.png" >}}

In addition to the common properties described above under `EmptyFlowSampler`, this sampler client also requires the following property:
* `notaryName`: The X500 name of the notary that will be acceptable to transfer cash tokens issued via this sampler. Issuing tokens does not need to be notarised, and therefore invoking this sampler does not create traffic to the notary. However, the notary is stored as part of the cash state and must be valid to do anything else with the cash state, therefore this sampler will check the notary identity against the network parameters of the node.
Expand All @@ -76,7 +76,7 @@ In addition to the common properties described above under `EmptyFlowSampler`, t
This sampler client has the classname `com.r3.corda.jmeter.CashIssueAndPaySampler` and can start either the flow `com.r3.corda.enterprise.perftestcordapp.flows.CashIssueAndPaymentFlow` or
`com.r3.corda.enterprise.perftestcordapp.flows.CashIssueAndpaymentNoSelection`, depending on its parameters. Either way, it issues 2 million dollars in tokens and then transfers the sum to a configurable other node, thus invoking the full vault access, peer-to-peer communication and notarisation cycle.

{{< figure alt="cash issue and pay sampler" width=80% zoom="../resources/cash-issue-and-pay-sampler.png" >}}
{{< figure alt="cash issue and pay sampler" width=80% src="../resources/cash-issue-and-pay-sampler.png" >}}


In addition to the parameters required for the `CashIssueSampler`, this sampler client also requires the following properties:
Expand All @@ -87,7 +87,7 @@ In addition to the parameters required for the `CashIssueSampler`, this sampler
## `CashPaySampler`
The classname of this sampler client is `com.r3.corda.jmeter.CashPaySampler`. The `CashPaySampler` client issues cash once per run in its `setupTest` method, and then generates a transaction to pay 1 dollar `numberOfStatesPerTx` times to a specified party per sample, thus invoking the notary and the payee via P2P. This allows us to test performance with different numbers of states per transaction, and to eliminate issuance from each sample (unlike `CashIssueAndPaySampler`).

{{< figure alt="cash pay sampler" width=80% zoom="../resources/cash-pay-sampler.png" >}}
{{< figure alt="cash pay sampler" width=80% src="../resources/cash-pay-sampler.png" >}}

In addition to the base requirements as in the `CashIssueSampler`, this sampler client requires the following properties:
* `otherPartyName`: The Corda X500 name of the party receiving the payments.
Expand Down
Loading