Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(recovery): add crash recovery implementation #3491

Draft
wants to merge 49 commits into
base: satp-dev
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
63a139c
feat(satp-Hermes): gateway refactor WIP
RafaelAPB Jan 30, 2024
3643932
fix(satp-hermes): fix build bugs and hanging tests
AndreAugusto11 Mar 4, 2024
aa7af44
feat(satp-hermes): add API1 layer WIP
RafaelAPB Mar 12, 2024
5a87450
feat(satp-hermes): add protobuf gateway refactor
LordKubaya Mar 23, 2024
946f64c
chore(satp-hermes): delete Kotlin SDK, add Go SDK
RafaelAPB Mar 23, 2024
a1fbe87
fixup(satp-hermes): remove test protos and endpoints
RafaelAPB Apr 12, 2024
66186cb
feat(satp-hermes): gRPC services draft implementation
LordKubaya Apr 10, 2024
ae0e5ab
fixup(satp-hermes): add skeleton for satp-bridge
RafaelAPB Apr 12, 2024
3411962
chore(satp-hermes): rename generated code for gateway and blo
RafaelAPB Apr 16, 2024
9097463
fix(satp-hermes): fix knex path for old gateway tests
RafaelAPB Apr 16, 2024
ad893f7
feat(satp-hermes): update protos and services
LordKubaya Apr 15, 2024
fc5c424
fixup!: wip gateway refactoring
RafaelAPB Apr 19, 2024
d02643b
fixup!: remove old implementation
RafaelAPB Apr 23, 2024
18af6e9
fixup!: rename new implementation, add new public api for plugin
RafaelAPB Apr 23, 2024
bb7bcfc
fix: refactor services and handlers
RafaelAPB Apr 26, 2024
a6d1d07
feat(bungee-hermes): viewProof & ethereum strategy
eduv09 Mar 26, 2024
8c65e10
fix: eslint all
rafaelbelchiorbd May 12, 2024
e923e5f
chore(satp-hermes): rebase with cacti main
RafaelAPB Jul 5, 2024
aadfbbc
feat(satp-hermes): satp development continuation and implementation s…
LordKubaya Jul 24, 2024
f2edd47
feat(satp-hermes): fabric and besu bridges, wrapper contracts with on…
LordKubaya Jul 24, 2024
c985db0
fix(satp-hermes): added generated code (#3443)
LordKubaya Jul 26, 2024
cd18042
fix(satp-hermes): run sequencial instead of paralel (#3445)
LordKubaya Jul 26, 2024
b81cfd1
feat(cc-tx-visualization): initial commit
maramih Aug 2, 2021
e3e0069
refactor(cc-tx-visualization): capture transactional data with RxJS
brunoffmateus Apr 2, 2024
7f71c8b
feat(hephaestus): analyse transactions using hephaestus
brunoffmateus Jun 12, 2024
bcc982d
feat(satp-hermes): add skeleton for stage0
eduv09 Jun 6, 2024
f529733
feat(satp-hermes): services tests
LordKubaya Jul 31, 2024
f31309c
feat(satp-hermes): add satp-plugin cli (wip)
RafaelAPB Aug 9, 2024
11e724b
chore(satp-hermes): fix satp build process
RafaelAPB Aug 9, 2024
8b887aa
feat(satp-hermes): satp-manager and gol refactor
LordKubaya Aug 13, 2024
7aee472
fix(satp-hermes): fix handler and service intialization
RafaelAPB Aug 14, 2024
86db76f
fix(satp-hermes): service errors and some stage bugs
LordKubaya Aug 19, 2024
008a807
feat(satp-hermes): stage0, bug fixing and test e2e
LordKubaya Aug 23, 2024
365332f
feat(satp-hermes): openApi transact implementation
LordKubaya Sep 5, 2024
f2afd89
feat(satp-hermes): improve admin endpoints
eduv09 Sep 6, 2024
a0036a7
refactor(cbdc-example): added gateways and contracts
eduv09 Sep 3, 2024
24ec6f7
refactor(cbdc-app): frontend update and some fixes
eduv09 Sep 3, 2024
4a3ff89
docs(example-cbdc): update frontend to match new functionality
AndreAugusto11 Sep 16, 2024
f397eb3
docs(cbdc-example): remove unused variables and unused code
AndreAugusto11 Sep 17, 2024
7ac9a12
fix(plugin-bungee-hermes): use ledger type from core-api OpenAPI spec
petermetz Oct 1, 2024
21bc863
build(plugin-satp-hermes): fix solidity lib import paths in satp tests
petermetz Oct 11, 2024
edbcfab
refactor(cbdc-example): use oapi sdk instead of axios, cbdc-backend s…
LordKubaya Oct 2, 2024
97916a4
feat(satp-hermes): bungee & ethereum bridge
eduv09 Oct 28, 2024
66538f4
feat(satp-hermes): docker and gateway runner for SATP
brunoffmateus Aug 19, 2024
2896426
squash!(satp-hermes): rebase with main
RafaelAPB Nov 9, 2024
30760ec
feat: add crash recovery and knex config for production
Yogesh01000100 Aug 20, 2024
eaac8fd
fix: add unit tests and resolve rollbackstate
Yogesh01000100 Oct 14, 2024
5ce06a8
feat: add function processing logs from g2
Yogesh01000100 Nov 3, 2024
cb24d53
feat: add cron schedule for periodic crash checks
Yogesh01000100 Nov 15, 2024
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
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
"cccs",
"ccep",
"ccid",
"cctx",
"celo",
"cids",
"clazz",
Expand Down Expand Up @@ -91,6 +92,7 @@
"hada",
"hashicorp",
"Healthcheck",
"hephaestus",
"HSTS",
"htlc",
"Htlc",
Expand Down
2 changes: 2 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ weaver/common/protos-js/**/*_pb.js
**/src/main/typescript/generated/proto/**
**/src/main/typescript/generated/wasm-pack/**

packages/cactus-plugin-satp-hermes/src/main/typescript/generated/*

examples/cactus-common-example-server/src/main/typescript/business-logic-plugin/BusinessLogicBase.ts
examples/cactus-common-example-server/src/main/typescript/business-logic-plugin/LedgerOperation.ts
examples/cactus-common-example-server/src/main/typescript/business-logic-plugin/app.ts
Expand Down
85 changes: 55 additions & 30 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1753,33 +1753,33 @@ jobs:
with:
name: coverage-reports-35
path: ./code-coverage-ts/**/
# cactus-plugin-satp-hermes:
# continue-on-error: false
# env:
# FULL_BUILD_DISABLED: true
# JEST_TEST_PATTERN: packages/cactus-plugin-satp-hermes/src/test/typescript/(unit|integration|benchmark)/.*/*.test.ts
# JEST_TEST_RUNNER_DISABLED: false
# TAPE_TEST_RUNNER_DISABLED: true
# needs: build-dev
# runs-on: ubuntu-22.04
# steps:
# - name: Use Node.js ${{ env.NODEJS_VERSION }}
# uses: actions/setup-node@v4.0.3
# with:
# node-version: ${{ env.NODEJS_VERSION }}
# - uses: actions/checkout@v4.1.7
# - id: yarn-cache-dir-path
# name: Get yarn cache directory path
# run: echo "dir=$(yarn cache dir)" >> "$GITHUB_OUTPUT"
# - id: yarn-cache
# name: Restore Yarn Cache
# uses: actions/cache@v4.0.2
# with:
# key: ${{ runner.os }}-yarn-${{ hashFiles('./yarn.lock') }}
# path: ./.yarn/
# restore-keys: |
# ${{ runner.os }}-yarn-
# - run: ./tools/ci.sh
cactus-plugin-satp-hermes:
continue-on-error: false
env:
FULL_BUILD_DISABLED: true
JEST_TEST_PATTERN: packages/cactus-plugin-satp-hermes/src/test/typescript/(unit|integration|benchmark)/.*/*.test.ts
JEST_TEST_RUNNER_DISABLED: false
TAPE_TEST_RUNNER_DISABLED: true
needs: build-dev
runs-on: ubuntu-22.04
steps:
- name: Use Node.js ${{ env.NODEJS_VERSION }}
uses: actions/setup-node@v4.0.2
with:
node-version: ${{ env.NODEJS_VERSION }}
- uses: actions/checkout@v4.1.1
- id: yarn-cache-dir-path
name: Get yarn cache directory path
run: echo "dir=$(yarn cache dir)" >> "$GITHUB_OUTPUT"
- id: yarn-cache
name: Restore Yarn Cache
uses: actions/cache@v4.0.1
with:
key: ${{ runner.os }}-yarn-${{ hashFiles('./yarn.lock') }}
path: ./.yarn/
restore-keys: |
${{ runner.os }}-yarn-
- run: ./tools/ci.sh
cp-bungee-hermes:
continue-on-error: false
env:
Expand All @@ -1788,8 +1788,8 @@ jobs:
# Free space left: 26 MB
FREE_UP_GITHUB_RUNNER_DISK_SPACE_DISABLED: false
FULL_BUILD_DISABLED: true
JEST_TEST_PATTERN: packages/cactus-plugin-satp-hermes/src/test/typescript/(unit|integration|benchmark)/.*/*.test.ts
JEST_TEST_RUNNER_DISABLED: false
JEST_TEST_PATTERN: packages/cactus-plugin-bungee-hermes/src/test/typescript/(unit|integration|benchmark)/.*/*.test.ts
JEST_TEST_COVERAGE_PATH: ./code-coverage-ts/cp-bungee-hermes
JEST_TEST_CODE_COVERAGE_ENABLED: true
TAPE_TEST_RUNNER_DISABLED: true
Expand All @@ -1809,14 +1809,39 @@ jobs:
key: ${{ runner.os }}-yarn-${{ hashFiles('./yarn.lock') }}
path: ./.yarn/
restore-keys: |
${{ runner.os }}-yarn-${{ hashFiles('./yarn.lock') }}
${{ runner.os }}-yarn-
- run: ./tools/ci.sh
if: ${{ env.RUN_CODE_COVERAGE == 'true' }}
- name: Upload coverage reports as artifacts
uses: actions/upload-artifact@v4.3.3
with:
name: coverage-reports-36
path: ./code-coverage-ts/**/
cactus-plugin-bungee-hermes:
continue-on-error: false
env:
FULL_BUILD_DISABLED: true
JEST_TEST_RUNNER_DISABLED: false
JEST_TEST_PATTERN: packages/cactus-plugin-bungee-hermes/src/test/typescript/(unit|integration|benchmark)/.*/*.test.ts
TAPE_TEST_RUNNER_DISABLED: true
needs: build-dev
runs-on: ubuntu-22.04
steps:
- name: Use Node.js ${{ env.NODEJS_VERSION }}
uses: actions/setup-node@v3.6.0
with:
node-version: ${{ env.NODEJS_VERSION }}
- uses: actions/checkout@v3.5.2

- id: yarn-cache
name: Restore Yarn Cache
uses: actions/cache@v3.3.1
with:
key: ${{ runner.os }}-yarn-${{ hashFiles('./yarn.lock') }}
path: ./.yarn/
restore-keys: |
${{ runner.os }}-yarn-${{ hashFiles('./yarn.lock') }}
- run: ./tools/ci.sh
ct-api-client:
continue-on-error: false
env:
Expand Down Expand Up @@ -2300,4 +2325,4 @@ name: Cactus_CI
push:
branches:
- main
- dev
- dev
1 change: 1 addition & 0 deletions CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
* @petermetz @takeutak @izuru0 @jagpreetsinghsasan @vramakrishna @sandeepnRES @outSH

packages/cactus-plugin-ccmodel-hephaestus @RafaelAPB
packages/cactus-plugin-satp-hermes @RafaelAPB
packages/cactus-plugin-bungee-hermes @RafaelAPB
examples/cactus-example-cbdc-bridging @RafaelAPB
Expand Down
2 changes: 2 additions & 0 deletions examples/cactus-example-cbdc-bridging-backend/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
cache/

21 changes: 17 additions & 4 deletions examples/cactus-example-cbdc-bridging-backend/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@ WORKDIR ${APP}

SHELL ["/bin/bash", "--login", "-i", "-c"]
# Installing Node Version Manager (nvm)
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash

RUN source ~/.bashrc && \
nvm install 16.8.0 && \
nvm install 18.18.2 && \
npm install -g yarn && \
npm run configure

Expand All @@ -46,8 +46,12 @@ COPY ./examples/cactus-example-cbdc-bridging-backend/healthcheck.sh /
ENV API_HOST=localhost
ENV API_SERVER_1_PORT=4000
ENV API_SERVER_2_PORT=4100
ENV API_HOST_FRONTEND=localhost
ENV API_PORT_FRONTEND=2000
ENV API_GATEWAY_1_BLO_PORT=4010
ENV API_GATEWAY_2_BLO_PORT=4110
ENV API_GATEWAY_1_CLIENT_PORT=3011
ENV API_GATEWAY_2_CLIENT_PORT=3111
ENV API_GATEWAY_1_SERVER_PORT=3010
ENV API_GATEWAY_2_SERVER_PORT=3110

COPY examples/cactus-example-cbdc-bridging-backend/src/fabric-contracts /usr/src/app/cactus/examples/cactus-example-cbdc-bridging-backend/dist/lib/fabric-contracts
COPY examples/cactus-example-cbdc-bridging-backend/supervisord.conf /etc/supervisord.conf
Expand All @@ -61,6 +65,15 @@ EXPOSE 4000
# API #2
EXPOSE 4100

EXPOSE 4010
EXPOSE 4110
EXPOSE 3011
EXPOSE 3111
EXPOSE 3010
EXPOSE 3110
#to the dummy server that exposes to the frontend the besu-satp contract address
EXPOSE 9999

# Extend the parent image's entrypoint
# https://superuser.com/questions/1459466/can-i-add-an-additional-docker-entrypoint-script
ENTRYPOINT ["/usr/bin/supervisord"]
Expand Down
27 changes: 21 additions & 6 deletions examples/cactus-example-cbdc-bridging-backend/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,31 +6,46 @@

On the terminal, issue the following commands in the project root:

1. `npm run configure`
2. `npm run start:example-cbdc-bridging-app`
1. `yarn run configure`
2. `yarn run start:example-cbdc-bridging-app`

Wait for the output to show the message `CbdcBridgingApp running...`

In a second terminal run the following commands from the project root:
3. `cd examples/cactus-example-cbdc-bridging-backend`
4. `npm run test`
4. `yarn run test`

## Running the Example Application Locally

> Make sure you have all the dependencies set up as explained in `BUILD.md`

On the terminal, issue the following commands:

1. `npm run configure`
2. `npm run start:example-cbdc-bridging-app`
1. `yarn run configure`
2. `yarn run start:example-cbdc-bridging-app`

Wait for the output to show the message `CbdcBridgingApp running...`

## Running with a different configuration

There is a `process.env` file where you can change the following variables:
```
API_HOST=localhost // the path where the backend will be running
API_SERVER_1_PORT=4000 // port assign to the FabricConnectorApi
API_SERVER_2_PORT=4100 // port assign to the BesuConnectorApi
API_GATEWAY_1_BLO_PORT=4010 // port assign to the Gateway1's OpenApi Service
API_GATEWAY_2_BLO_PORT=4110 // port assign to the Gateway2's SATP Service
API_GATEWAY_1_CLIENT_PORT=3011 // port assign to the Gateway1's SATP Client Service
API_GATEWAY_2_CLIENT_PORT=3111 // port assign to the Gateway2's SATP Client Service
API_GATEWAY_1_SERVER_PORT=3010 // port assign to the Gateway1's SATP Server Service
API_GATEWAY_2_SERVER_PORT=3110 // port assign to the Gateway2's SATP Server Service
```

## Debugging the Example Application Locally

On the terminal, issue the following commands (steps 1 to 6) and then perform the rest of the steps manually.

1. `npm run configure`
1. `yarn run configure`
2. Locate the `.vscode/template.launch.json` file
3. Within that file locate the entry named `"Example: CBDC Bridging Fabric-EVM App"`
4. Copy the VSCode debug definition object from 2) to your `.vscode/launch.json` file
Expand Down
4 changes: 4 additions & 0 deletions examples/cactus-example-cbdc-bridging-backend/foundry.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[profile.default]
solc-version = "0.8.20"
evm-version = "paris"
libs = ["node_modules", "lib"]
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json",
"spaces": 2,
"generator-cli": {
"version": "7.8.0"
}
}
52 changes: 39 additions & 13 deletions examples/cactus-example-cbdc-bridging-backend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,16 @@
},
"contributors": [
{
"name": "Please add yourself to the list of contributors",
"email": "your.name@example.com",
"url": "https://example.com"
"name": "Eduardo Vasques",
"email": "eduardovasques10@tecnico.ulisboa.pt"
},
{
"name": "André Augusto",
"email": "andre.augusto@tecnico.ulisboa.pt"
},
{
"name": "Carlos Amaro",
"email": "carlosrscamaro@tecnico.ulisboa.pt"
}
],
"main": "dist/lib/main/typescript/index.js",
Expand All @@ -45,16 +48,28 @@
],
"scripts": {
"build:dev:backend:postbuild": "mkdir -p ./dist/lib/fabric-contracts && cp -r ./src/fabric-contracts/* ./dist/lib/fabric-contracts/",
"forge": "forge build ./src/solidity/main/*.sol --out ./src/solidity/main/generated",
"forge:all": "run-s 'forge' 'forge:test'",
"forge:test": "forge build ./src/solidity/test/*.sol --out ./src/solidity/test/generated",
"solidity": "hardhat compile",
"start": "node dist/lib/main/typescript/cbdc-bridging-app-cli.js dotenv_config_path=./process.env",
"start": "npx ts-node ./src/main/typescript/cbdc-bridging-app-cli.ts dotenv_config_path=./process.env",
"test": "nyc cucumber-js ./src/test/typescript/cucumber/features/*.feature --require-module ts-node/register --require './src/test/typescript/cucumber/*/*.ts'",
"watch": "npm-watch",
"webpack": "npm-run-all webpack:dev",
"webpack:dev": "npm-run-all webpack:dev:node webpack:dev:web",
"webpack:dev:node": "webpack --env=dev --target=node --config ../../webpack.config.js",
"webpack:dev:web": "webpack --env=dev --target=web --config ../../webpack.config.js"
"webpack:dev:web": "webpack --env=dev --target=web --config ../../webpack.config.js",
"codegen": "run-p 'codegen:*'",
"codegen:openapi": "npm run generate-sdk",
"generate-sdk": "run-p 'generate-sdk:*'",
"generate-sdk:typescript-axios": "yarn bundle-openapi-yaml && yarn bundle-openapi-json && openapi-generator-cli generate -i ./src/main/yml/openapi-bundled.yml -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected --enable-post-process-file",
"generate-sdk:go": "openapi-generator-cli generate -i ./src/main/yml/openapi.yml -g go -o ./src/main/go/generated/openapi --additional-properties=packageName=generated,generateInterfaces=true,packageVersion=v0.0.1,moduleName=github.com/hyperledger/cacti/examples/cactus-example-cbdc-bridging-backend/src/main/go/generated --git-user-id hyperledger --git-repo-id cacti/examples/cactus-example-cbdc-bridging-backend/src/main/go/generated",
"bundle-openapi-yaml": "swagger-cli bundle ./src/main/yml/openapi.yml -o ./src/main/yml/openapi-bundled.yml -r -t yaml",
"bundle-openapi-json": "swagger-cli bundle ./src/main/yml/openapi.yml -o ./src/main/json/openapi-bundled.json -r -t json",
"lint:oapi": "vacuum lint -d -e ./src/main/yml/openapi-bundled.yml"
},
"dependencies": {
"@foundry-rs/hardhat-forge": "0.1.17",
"@hyperledger/cactus-api-client": "2.0.0",
"@hyperledger/cactus-cmd-api-server": "2.0.0",
"@hyperledger/cactus-common": "2.0.0",
Expand All @@ -67,38 +82,49 @@
"@hyperledger/cactus-plugin-object-store-ipfs": "2.0.0",
"@hyperledger/cactus-plugin-satp-hermes": "2.0.0",
"@hyperledger/cactus-test-tooling": "2.0.0",
"@openzeppelin/contracts": "4.9.6",
"@openzeppelin/contracts": "5.0.2",
"@openzeppelin/contracts-upgradeable": "4.9.6",
"async-exit-hook": "2.0.1",
"axios": "1.7.7",
"body-parser": "1.20.3",
"cors": "2.8.5",
"crypto-js": "4.2.0",
"dotenv": "16.0.1",
"dotenv": "16.4.5",
"express": "4.21.0",
"fabric-network": "2.2.20",
"fs-extra": "11.2.0",
"fs-extra": "10.1.0",
"hardhat": "2.22.5",
"knex": "2.5.1",
"kubo-rpc-client": "3.0.1",
"nyc": "13.1.0",
"openapi-types": "12.1.3",
"socket.io": "4.6.2",
"sqlite3": "5.1.5",
"typescript-optional": "2.0.1",
"uuid": "10.0.0",
"uuid": "9.0.1",
"web3-core": "1.10.1",
"web3-utils": "1.10.1"
"web3-utils": "1.10.1",
"webpack": "^5.94.0"
},
"devDependencies": {
"@apidevtools/swagger-cli": "4.0.4",
"@types/crypto-js": "4.1.1",
"@types/cucumber": "4.0.4",
"@types/express": "5.0.0",
"@types/express-jwt": "6.0.2",
"@types/fs-extra": "11.0.4",
"@types/fs-extra": "9.0.13",
"@types/node": "18.11.9",
"@types/uuid": "10.0.0",
"@types/swagger-ui-express": "4.1.6",
"@types/uuid": "9.0.8",
"cucumber": "5.0.3",
"ethereum-abi-types-generator": "1.3.4",
"hardhat": "2.17.2",
"http-status-codes": "2.1.4",
"jose": "4.15.5",
"npm-run-all": "4.1.5",
"remix-tests": "0.1.34",
"ts-node": "7.0.1"
"swagger-cli": "4.0.4",
"ts-node": "10.9.2"
},
"engines": {
"node": ">=18",
Expand Down
11 changes: 6 additions & 5 deletions examples/cactus-example-cbdc-bridging-backend/process.env
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
API_HOST=localhost
API_SERVER_1_PORT=4000
API_SERVER_2_PORT=4100
API_HOST_FRONTEND=localhost
API_PORT_FRONTEND=2000
API_CRPC_HOST=localhost
API_SERVER_1_CRPC_PORT=6000
API_SERVER_2_CRPC_PORT=6100
API_GATEWAY_1_BLO_PORT=4010
API_GATEWAY_2_BLO_PORT=4110
API_GATEWAY_1_CLIENT_PORT=3011
API_GATEWAY_2_CLIENT_PORT=3111
API_GATEWAY_1_SERVER_PORT=3010
API_GATEWAY_2_SERVER_PORT=3110
Loading
Loading