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

Release 4.0.0-beta #115

Merged
merged 151 commits into from
Jul 19, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
151 commits
Select commit Hold shift + click to select a range
9eed248
remove feature(min_specialization)
coreggon11 May 30, 2023
9f3fd84
remove default fn
coreggon11 May 30, 2023
a062de7
new trait system for PSP22
coreggon11 May 31, 2023
b1a87f4
new trait system for PSP22 extensions
coreggon11 May 31, 2023
add431f
fix psp22 burnable example
coreggon11 May 31, 2023
57599ca
impl new trait system in psp22 capped example
coreggon11 May 31, 2023
8058d14
impl new trait system in flashmint example
coreggon11 May 31, 2023
822285c
impl new trait system in psp22 metadata example
coreggon11 May 31, 2023
a167604
impl new trait system in psp22 mintable example
coreggon11 May 31, 2023
8d7350a
impl new trait system in psp22 pausable example
coreggon11 May 31, 2023
4304f6b
impl new trait system in psp22 wrapper example
coreggon11 May 31, 2023
046d368
impl new trait system in psp22 timelock example
coreggon11 May 31, 2023
4e07b3c
impl new trait system in psp22 pallet example
coreggon11 May 31, 2023
97af9d7
impl new trait system in psp22 pallet extension examples
coreggon11 May 31, 2023
a3c81cb
impl new trait system for PSP34
coreggon11 Jun 2, 2023
9c766d7
impl new trait system in psp34 example
coreggon11 Jun 2, 2023
822ddb6
impl new trait system in psp34 extension examples
coreggon11 Jun 2, 2023
4afc9bd
impl new trait system for PSP37
coreggon11 Jun 2, 2023
c022a7c
impl new trait system in psp37 extension examples
coreggon11 Jun 2, 2023
21b24f0
Add UI tests
varex83 Jun 2, 2023
9144ecc
impl new trait system in psp37 extension examples
coreggon11 Jun 2, 2023
285d34e
impl new trait system in access control
coreggon11 Jun 2, 2023
f5ce8f7
impl new trait system in ownable example
coreggon11 Jun 5, 2023
4771d79
impl new trait system in payment splitter
coreggon11 Jun 5, 2023
bfa4c61
impl new trait system in timelock controller
coreggon11 Jun 5, 2023
3bf37e4
impl new trait system in pausable example
coreggon11 Jun 5, 2023
a4d8af2
impl new trait system in diamond standard example contracts
coreggon11 Jun 5, 2023
8e5a180
impl new trait system in proxy example contracts
coreggon11 Jun 5, 2023
c13a2aa
impl new trait system in diamond contracts
coreggon11 Jun 6, 2023
b9fa3cc
Merge branch 'main' into feature/stable-rust
coreggon11 Jun 6, 2023
e0d22a1
new trait system in accessors
coreggon11 Jun 6, 2023
c87cbb9
fix building of example contracts & remove alternatives
coreggon11 Jun 6, 2023
52cd576
fix rust fmt
coreggon11 Jun 6, 2023
ad62b7a
psp22 implementation macro
coreggon11 Jun 9, 2023
cdef6d6
implementation macro, PSP22 implementation
coreggon11 Jun 12, 2023
5dcd898
implementations of PSP22 extensions
coreggon11 Jun 12, 2023
cb4b379
update CI to use stable rust
coreggon11 Jun 12, 2023
0dc0135
psp22 utils implementation
coreggon11 Jun 12, 2023
1f2af80
enable CI on develop
coreggon11 Jun 12, 2023
9a27813
fix rustfmt job
coreggon11 Jun 12, 2023
36c4a97
psp22 pallet implementations
coreggon11 Jun 12, 2023
cf3a128
psp34 implementations
coreggon11 Jun 12, 2023
027175d
implement psp37
coreggon11 Jun 13, 2023
bcb51de
support overriding with fn attributes
coreggon11 Jun 13, 2023
3857ae8
ownable implementation
coreggon11 Jun 13, 2023
ccc4f5b
implement access control, pausable, pymentr splitter, timelockc ontro…
coreggon11 Jun 13, 2023
59f2f06
remove PSP22 pausabele example (redundant)
coreggon11 Jun 13, 2023
516deea
fix contract storage struct name in implementation macro, simplify ar…
coreggon11 Jun 13, 2023
cb006ea
implement proxy examples
coreggon11 Jun 13, 2023
1f42fe1
impl for diamond
coreggon11 Jun 13, 2023
4fe6f20
rustfmt
coreggon11 Jun 13, 2023
574ceb2
example project builds
coreggon11 Jun 14, 2023
4a1261a
fix ui tests
o-tsaruk Jun 14, 2023
5992587
fix unit tests
coreggon11 Jun 14, 2023
cb0d91e
fix tricky error
coreggon11 Jun 14, 2023
b8b8ee5
fix same tricky error
coreggon11 Jun 14, 2023
4855d1e
fix test
coreggon11 Jun 14, 2023
4ab0bb5
enable contract size pipeline
coreggon11 Jun 15, 2023
9fcdb55
use rustc 1.69 in CI
coreggon11 Jun 15, 2023
575d51d
bump ink to v 4.2.1
coreggon11 Jun 15, 2023
2bc6c8f
update accessors macro for stable
coreggon11 Jun 16, 2023
431de93
bump ink_e2e version to4.2.1
coreggon11 Jun 16, 2023
b656381
fix some errors
coreggon11 Jun 16, 2023
6a6b7db
fix CI
coreggon11 Jun 17, 2023
288d5d3
ui tests CI
o-tsaruk Jun 19, 2023
2c8540a
update scale info and docs
coreggon11 Jun 19, 2023
5bf0d50
Merge branch 'main' into feature/stable-rust
coreggon11 Jun 19, 2023
da47a0f
cleanup
coreggon11 Jun 22, 2023
c0e61d2
fix build issues
coreggon11 Jun 22, 2023
55b19b1
remove `ZERO_ADDRESS` use `Option<AccountId>` instead
coreggon11 Jun 26, 2023
6bef21a
fix tests
coreggon11 Jun 26, 2023
9b26b76
formatting
coreggon11 Jun 26, 2023
d6a74cd
remove reserved fields
coreggon11 Jun 27, 2023
0d8f17f
remove occupy storage, make everything ink::storage_item
coreggon11 Jun 28, 2023
1d8282e
use Lazy in storage fields
coreggon11 Jun 29, 2023
f10b0cd
remove upgradeable storage macro
coreggon11 Jun 29, 2023
e32f24a
fix tests
coreggon11 Jun 29, 2023
0b50e23
add `Upgradeable` trait, which exposes the `set_code_hash` function.
coreggon11 Jun 30, 2023
fba855e
Update contracts to work with latest cargo-contract
varex83 Jun 30, 2023
c46425d
add upgradeable trait and tsst for upgradeable traits
coreggon11 Jun 30, 2023
8735c48
Merge branch 'feature/fix-upgradeable' of https://github.com/Brushfam…
coreggon11 Jun 30, 2023
e6e1c57
Add storage_item macro
varex83 Jun 30, 2023
d240830
Fix warnings
varex83 Jun 30, 2023
b3cbe40
Merge remote-tracking branch 'origin/feature/fix-upgradeable' into fe…
varex83 Jun 30, 2023
6d1d6fd
Apply storage_item macro to all contracts
varex83 Jun 30, 2023
07b2f01
formatting + fix some issues
coreggon11 Jun 30, 2023
1b2915b
Fix example_project_structure
varex83 Jul 3, 2023
2d46e9e
Update typechain tests
varex83 Jul 3, 2023
c8b9687
Update CI to use yarn
varex83 Jul 3, 2023
6fa20e3
Update toolchain from stable 1.69
varex83 Jul 3, 2023
23d312b
formatting
coreggon11 Jul 3, 2023
18432af
remove unused
coreggon11 Jul 4, 2023
1920be8
fix issue with access control
coreggon11 Jul 4, 2023
4a2a4c6
use openbrush::storage_item where not used
coreggon11 Jul 4, 2023
16776d4
`lazy_field` -> `lazy`
coreggon11 Jul 5, 2023
116aaa2
update psp 34 balances manager trait
coreggon11 Jul 5, 2023
745bb87
Update docs, update ob storage_item
varex83 Jul 5, 2023
b9b089a
Merge remote-tracking branch 'origin/feature/fix-upgradeable' into fe…
varex83 Jul 5, 2023
c9c348f
update psp34 enumerable balances manager trait
coreggon11 Jul 5, 2023
60bb99f
Merge branch 'feature/fix-upgradeable' of https://github.com/Brushfam…
coreggon11 Jul 5, 2023
039a3a7
Fix lazy_field -> lazy
varex83 Jul 5, 2023
d809d32
Merge remote-tracking branch 'origin/feature/fix-upgradeable' into fe…
varex83 Jul 5, 2023
594ff09
fix psp37 enumerable
coreggon11 Jul 5, 2023
bce42ce
clippy VOL. 1
coreggon11 Jul 5, 2023
888c730
clippy VOL. 2
coreggon11 Jul 5, 2023
3c4bdad
clippy VOL. 3
coreggon11 Jul 5, 2023
9465807
clippy VOL. 4
coreggon11 Jul 5, 2023
c5a137b
Update docs to latest OB version
varex83 Jul 5, 2023
52cd793
update ugpradeable docs
coreggon11 Jul 5, 2023
809f8dc
fix upgradeable contracts
Artemka374 Jul 6, 2023
24d0784
Update docs
Artemka374 Jul 6, 2023
a4d2c83
Merge branch 'feature/update-docs' into feature/fix-upgradeable
Artemka374 Jul 6, 2023
a2650d0
Merge branch 'feature/fix-upgradeable' into feature/ui-tests
Artemka374 Jul 6, 2023
6b61bbf
Merge pull request #77 from Brushfam/feature/ui-tests
Artemka374 Jul 6, 2023
cbb7f80
Merge pull request #99 from Brushfam/feature/fix-upgradeable
Artemka374 Jul 6, 2023
e3dcda1
Merge pull request #98 from Brushfam/feature/remove-zero-address-stable
Artemka374 Jul 6, 2023
31b1188
fix proxy
Artemka374 Jul 6, 2023
3e085ce
update CI
Artemka374 Jul 6, 2023
4a387b9
update CI
Artemka374 Jul 6, 2023
9e76321
update build script
Artemka374 Jul 6, 2023
a4facdc
update Dockerfile
Artemka374 Jul 6, 2023
034a826
use toolchain 1.69 instead of stable
coreggon11 Jul 6, 2023
83234a8
install stable in examples-build CI action
coreggon11 Jul 6, 2023
48fdba1
Delete UI tests
varex83 Jul 6, 2023
21e496d
Revert "Delete UI tests"
varex83 Jul 6, 2023
f876417
Merge remote-tracking branch 'origin/feature/stable-rust' into featur…
varex83 Jul 6, 2023
d4886f2
install stable toolchain in contract-size action
coreggon11 Jul 6, 2023
ab8ab80
Install nightly for destination branch in contract-size action
coreggon11 Jul 7, 2023
2935241
Fix ui tests
prxgr4mm3r Jul 7, 2023
2df2d96
extend docs regarding new stuff a bit
coreggon11 Jul 7, 2023
9b604c4
Merge pull request #102 from Brushfam/fix/update-ui-tests
coreggon11 Jul 7, 2023
271dabd
update docs regarding new stuff
coreggon11 Jul 7, 2023
dfe4715
remove unnecessary flushing
coreggon11 Jul 7, 2023
8eb1cb7
add ownable to upgradeable by default
coreggon11 Jul 7, 2023
bc2bd30
Add CHANGELOG.md
varex83 Jul 10, 2023
fd7776a
Update CHANGELOG.md
varex83 Jul 11, 2023
4fa02fd
Update CHANGELOG.md
varex83 Jul 11, 2023
d6874da
Merge pull request #106 from Brushfam/feature/changelogmd
Artemka374 Jul 11, 2023
b0dc39a
Fix docs
prxgr4mm3r Jul 11, 2023
129416a
Fix docs
prxgr4mm3r Jul 11, 2023
ad2cb6b
Fix openbrush import in docs/docs/smart-contracts/example/contract.md
prxgr4mm3r Jul 12, 2023
63a4966
update docs
Artemka374 Jul 13, 2023
63714aa
wrong standard naming in impls
Artemka374 Jul 13, 2023
0baf961
Update docs/docs/getting-started.md
Artemka374 Jul 18, 2023
4b93103
Update docs/docs/smart-contracts/example/shares.md
Artemka374 Jul 18, 2023
cfe1ecb
Merge pull request #107 from Brushfam/feature/fix-docs
Artemka374 Jul 18, 2023
9868ab9
Merge pull request #78 from Brushfam/feature/stable-rust
Artemka374 Jul 18, 2023
e451cc5
update versions and branches
Artemka374 Jul 19, 2023
713f4a1
Merge pull request #114 from Brushfam/feature/update-version
Artemka374 Jul 19, 2023
700de5e
Merge branch 'main' into develop
Artemka374 Jul 19, 2023
718f1bc
fix link in docs
Artemka374 Jul 19, 2023
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
  •  
  •  
  •  
170 changes: 104 additions & 66 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: CI/CD

on:
pull_request:
branches: [ main ]
branches: [ main, develop ]

jobs:
rustfmt:
Expand All @@ -12,37 +12,38 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install specific nightly
- name: Install nightly
# we use nightly because of nice formatting option :)
uses: actions-rs/toolchain@v1
with:
toolchain: nightly-2023-01-01
toolchain: nightly
override: true
components: rustfmt
default: true

- name: Rustfmt check
run: cargo +nightly-2023-01-01 fmt --all -- --check
run: cargo +nightly fmt --all -- --check
unit-test:
concurrency:
group: unit-test-${{ github.ref }}
cancel-in-progress: true
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install specific nightly
- name: Install stable
uses: actions-rs/toolchain@v1
with:
toolchain: nightly-2023-01-01
toolchain: 1.69
override: true
components: rustfmt, clippy
default: true

- name: Build & Run all default unit tests
run: |
RUSTFLAGS="-D warnings" cargo +nightly-2023-01-01 test --workspace --features test-all -- --test-threads=10
RUSTFLAGS="-D warnings" cargo test --workspace --features test-all -- --test-threads=10
- name: Build & Run pallet unit tests
run: |
RUSTFLAGS="-D warnings" cargo +nightly-2023-01-01 test --workspace --features psp22_pallet -- --test-threads=10
RUSTFLAGS="-D warnings" cargo test --workspace --features psp22_pallet -- --test-threads=10
examples-builds:
concurrency:
group: examples-builds-${{ github.ref }}
Expand All @@ -58,6 +59,14 @@ jobs:
with:
node-version: '16.x'
- uses: actions/checkout@v3
- name: Install stable
uses: actions-rs/toolchain@v1
with:
toolchain: 1.69
override: true
default: true
target: wasm32-unknown-unknown
components: rust-src
- name: NPM install dependencies
run: |
npm i
Expand All @@ -79,7 +88,7 @@ jobs:
path: artifacts
key: cache-contract-artifacts-${{ github.sha }}

- name: Typechain Сompile examples
- name: Typechain Compile examples
run: |
chown -R root .
chmod -R a+rwx .
Expand Down Expand Up @@ -113,7 +122,6 @@ jobs:
options: --user root
env:
CARGO_TARGET_DIR: /usr/local/cache/target
if: false
steps:
- uses: actions/setup-node@v1
with:
Expand All @@ -128,6 +136,15 @@ jobs:
key: cache-rust-artifacts-${{ hashFiles('Cargo.toml') }}-${{ github.ref }}
restore-keys: |
cache-rust-artifacts-${{ hashFiles('Cargo.toml') }}

- name: Install stable
uses: actions-rs/toolchain@v1
with:
toolchain: 1.69
override: true
default: true
target: wasm32-unknown-unknown
components: rust-src

- name: Find contract data for source branch
id: find-data-source
Expand All @@ -151,6 +168,15 @@ jobs:
npm i
npm i ts-node

- name: Install nightly for destination branch
uses: actions-rs/toolchain@v1
with:
toolchain: nightly-2023-01-01
override: true
default: true
target: wasm32-unknown-unknown
components: rust-src

- name: Cache rust artifacts for destination branch
id: cache-rust-artifacts-destination
uses: actions/cache@v3
Expand Down Expand Up @@ -218,63 +244,75 @@ jobs:
with:
node-version: '16.x'
- uses: actions/checkout@v3
- name: NPM install dependencies
run: |
npm i
npm i ts-node
- name: Install stable
uses: actions-rs/toolchain@v1
with:
toolchain: 1.69
override: true
default: true
target: wasm32-unknown-unknown
components: rust-src

- name: Run Test
run: |
./e2e-tests.sh ./examples/** ./examples
# typechain-e2e-tests:
# concurrency:
# group: typechain-e2e-tests-${{ github.ref }}
# cancel-in-progress: true
# runs-on: ubuntu-latest
# needs: examples-builds
# container:
# image: ghcr.io/brushfam/openbrush-contracts-ci
# options: --user root
# env:
# CARGO_TARGET_DIR: /usr/local/cache/target
# steps:
# - uses: actions/setup-node@v1
# with:
# node-version: '16.x'
# - uses: actions/checkout@v3
# - name: NPM install dependencies
# run: |
# npm i
# npm i ts-node
#
# - name: Cache contract artifacts
# id: cache-contract-artifacts
# uses: actions/cache@v3
# with:
# path: artifacts
# key: cache-contract-artifacts-${{ github.sha }}
#
# - name: Generate Typechain code
# run:
# npm run build:release:no-compile
#
# - name: Run Test Mocha
# run: |
# for test in $(find tests -type f -regex ".*\.ts"); do
# has_timeout=true
# while $has_timeout
# do
# substrate-contracts-node --tmp --dev & P1=$!;
# set +e;
# output=$(npm run test:mocha-single ./$test || true);
# set -e;
# if echo $output | grep -q 'For async tests and hooks, ensure "done()" is called'; then
# echo $output;
# has_timeout=true
# else
# npm run test:mocha-single ./$test
# has_timeout=false
# fi
# kill $P1;
# done
# done
typechain-e2e-tests:
concurrency:
group: typechain-e2e-tests-${{ github.ref }}
cancel-in-progress: true
runs-on: ubuntu-latest
needs: examples-builds
container:
image: ghcr.io/brushfam/openbrush-contracts-ci
options: --user root
env:
CARGO_TARGET_DIR: /usr/local/cache/target
steps:
- uses: actions/setup-node@v1
with:
node-version: '16.x'
- uses: actions/checkout@v3
- name: Install stable
uses: actions-rs/toolchain@v1
with:
toolchain: 1.69
override: true
default: true
target: wasm32-unknown-unknown
components: rust-src
- name: Yarn install dependencies
run: |
yarn
yarn add ts-node

- name: Cache contract artifacts
id: cache-contract-artifacts
uses: actions/cache@v3
with:
path: artifacts
key: cache-contract-artifacts-${{ github.sha }}

- name: Generate Typechain code
run:
yarn build:release:no-compile

- name: Run Test Mocha
run: |
for test in $(find tests -type f -regex ".*\.ts"); do
has_timeout=true
while $has_timeout
do
substrate-contracts-node --tmp --dev & P1=$!;
set +e;
output=$(yarn test:mocha-single ./$test || true);
set -e;
if echo $output | grep -q 'For async tests and hooks, ensure "done()" is called'; then
echo $output;
has_timeout=true
else
yarn test:mocha-single ./$test
has_timeout=false
fi
kill $P1;
done
done
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,6 @@ package-lock.json
yarn.lock
.cargo/config.toml

typechain-generated/
typechain-generated/

clean.sh
21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased v4.0.0]

### Added
- [*BREAKING*] `implementation`, `override` macros: [78](https://github.com/Brushfam/openbrush-contracts/pull/78)
- [*BREAKING*] `storage_item` macro, new OB feature: `Upgradeable`, which implements `set_code_hash` functionality [99](https://github.com/Brushfam/openbrush-contracts/pull/99)
- `UI` tests [77](https://github.com/Brushfam/openbrush-contracts/pull/77)
- `openbrush::accessors` macro for automatic generation of getters/setters for storage items: [66](https://github.com/Brushfam/openbrush-contracts/pull/66) and [61](https://github.com/Brushfam/openbrush-contracts/pull/61)

### Removed
- [*BREAKING*] `min_specilization`, now openbrush is `stable`: [78](https://github.com/Brushfam/openbrush-contracts/pull/78)
- `ZERO_ADDRESS`, now using `Option<AccountId>` instead: [98](https://github.com/Brushfam/openbrush-contracts/pull/98)

### Fixed
- Fixed reentrancy guard problem: [#88](https://github.com/Brushfam/openbrush-contracts/pull/88)
17 changes: 10 additions & 7 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ exclude = [

[package]
name = "openbrush"
version = "3.1.1"
version= "4.0.0-beta"
authors = ["Brushfam <[email protected]>"]
edition = "2018"

license = "MIT"
readme = "README.md"
repository = "https://github.com/727-Ventures/openbrush-contracts"
repository = "https://github.com/Brushfam/openbrush-contracts"
documentation = "https://docs.openbrush.io"
homepage = "https://727.ventures"
description = "OpenBrush library for smart contract development on ink!."
Expand All @@ -26,12 +26,12 @@ categories = ["no-std", "embedded"]
include = ["Cargo.toml", "src/**/*.rs"]

[dependencies]
ink = { version = "4.1.0", default-features = false}
ink = { version = "4.2.1", default-features = false }
scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] }
scale-info = { version = "2.3", default-features = false, features = ["derive"], optional = true }
scale-info = { version = "2.6", default-features = false, features = ["derive"] }

openbrush_contracts = { version = "~3.1.1", path = "contracts", default-features = false }
openbrush_lang = { version = "~3.1.1", path = "lang", default-features = false }
openbrush_contracts = { version = "~4.0.0-beta", path = "contracts", default-features = false }
openbrush_lang = { version = "~4.0.0-beta", path = "lang", default-features = false }

[lib]
name = "openbrush"
Expand All @@ -41,7 +41,9 @@ crate-type = [
]

[dev-dependencies]
ink_e2e = "4.1.0"
ink_env = "4.2.1"
trybuild = "1.0.80"
ink_e2e = "4.2.1"

[features]
default = ["std"]
Expand All @@ -64,6 +66,7 @@ pausable = ["openbrush_contracts/pausable"]
timelock_controller = ["openbrush_contracts/timelock_controller"]
proxy = ["openbrush_contracts/proxy"]
diamond = ["openbrush_contracts/diamond"]
upgradeable = ["openbrush_contracts/upgradeable"]

test-all = [
"psp22",
Expand Down
6 changes: 3 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ RUN npm install -g n && \
npm install -g yarn && \
n stable

RUN curl -sSf https://sh.rustup.rs/ | sh -s -- --default-toolchain nightly-2023-03-19 -y
RUN curl -sSf https://sh.rustup.rs/ | sh

RUN rustup component add rust-src --toolchain nightly-2023-01-01-x86_64-unknown-linux-gnu
RUN rustup component add rust-src
RUN rustup target add wasm32-unknown-unknown

RUN cargo install cargo-dylint dylint-link

RUN cargo install cargo-contract --version 2.0.1 --force && \
RUN cargo install cargo-contract --version 3.0.0 --force && \
cargo install contracts-node --git https://github.com/paritytech/substrate-contracts-node.git --force --locked
Loading
Loading