Skip to content

Commit

Permalink
Update readme, move monthly update (#1257)
Browse files Browse the repository at this point in the history
* Monthly update has been moved

* Update readme

* Replace `paritytech.github.io` with `ink.substrate.io`

* Apply suggestions from code review

Co-authored-by: Alexander Theißen <alex.theissen@me.com>

Co-authored-by: Alexander Theißen <alex.theissen@me.com>
  • Loading branch information
cmichi and athei committed May 17, 2022
1 parent 90c7327 commit 961c7ef
Show file tree
Hide file tree
Showing 7 changed files with 19 additions and 197 deletions.
182 changes: 1 addition & 181 deletions MONTHLY_UPDATE.md
Original file line number Diff line number Diff line change
@@ -1,183 +1,3 @@
# Monthly Update: Parity Smart Contracts

## What is this?
Hey there reader 👋!

This is meant to be a high-level overview of the changes that have taken place as part of
Parity's Web Assembly (Wasm) smart contract efforts. These efforts include the [`ink!`](https://github.com/paritytech/ink)
programming language, the [`pallet-contracts`](https://github.com/paritytech/substrate/tree/master/frame/contracts) execution environment, the [`cargo-contract`](https://github.com/paritytech/cargo-contract)
development tool, and the [Canvas parachain](https://github.com/paritytech/cumulus/tree/master/polkadot-parachains/canvas-kusama). For anything UI related go check out the
[`contracts-ui` repository](https://github.com/paritytech/contracts-ui).

If these updates are too high-level for you you can always check out the release notes for
the various projects:
- [`ink!`](https://github.com/paritytech/ink/blob/master/RELEASES.md)
- [`pallet-contracts`](https://github.com/paritytech/substrate/blob/master/frame/contracts/CHANGELOG.md)
- [`cargo-contract`](https://github.com/paritytech/cargo-contract/blob/master/CHANGELOG.md)

If you're new here and aren't sure where to get started with ink! check out our
[guided tutorial for beginners](https://docs.substrate.io/tutorials/v3/ink-workshop/pt1/).

This was inspired by the [Polkadot Staking Progress Report](https://gist.github.com/kianenigma/aa835946455b9a3f167821b9d05ba376) ❤️.

## April 2022

### Releases 🆕

For ink! we released [v3.0.1](https://github.com/paritytech/ink/releases/tag/v3.0.1) with
minor bugfixes. Besides that we made a number of improvements to our examples ‒ mostly to
our [upgradeable contracts examples](https://github.com/paritytech/ink/tree/master/examples/upgradeable-contracts).

For [`cargo-contract`](https://github.com/paritytech/cargo-contract) we released
[v1.1.1](https://github.com/paritytech/cargo-contract/releases/tag/v1.1.1) and
[v1.2.0](https://github.com/paritytech/cargo-contract/releases/tag/v1.2.0)
with bug fixes, a new sub-command `decode`, and improved support for the `call` and
`instantiate` sub-commands.

For tutorials, development and testing we recommend using our
[`substrate-contracts-node`](https://github.com/paritytech/substrate-contracts-node).
We issued the release [v0.13.0](https://github.com/paritytech/substrate-contracts-node/releases/tag/v0.13.0),
which is in sync with a recent Substrate `master` (see the release notes for the specific commit hash).
Pre-built binaries for the release are available for Linux and Mac.

### Community Badges 🙌

We've added two versions of a community badge.

If you have a public repository with an ink! contract it would be awesome
if you could add one of those!

#### Normal Design

[![Built with ink!](.images/badge.svg)](https://github.com/paritytech/ink)

```markdown
[![Built with ink!](https://raw.githubusercontent.com/paritytech/ink/master/.images/badge.svg)](https://github.com/paritytech/ink)
```

#### Flat Design

[![Built with ink!](.images/badge_flat.svg)](https://github.com/paritytech/ink)

```markdown
[![Built with ink!](https://raw.githubusercontent.com/paritytech/ink/master/.images/badge_flat.svg)](https://github.com/paritytech/ink)
```

### Team Retreat in Athens 🇬🇷

We ‒ the developers working on ink!, Substrate's [`pallet-contracts`](https://github.com/paritytech/substrate/tree/master/frame/contracts),
and the [Contracts UI](https://github.com/paritytech/contracts-ui)
went on a team retreat in April. We discussed our roadmap for the rest
of this year, as well as some technical designs of how we want to implement
e.g. XCM in ink!. We're normally working across different time zones, with
some of us embracing the digital nomad lifestyle. Hence it was very
productive to gather together for a week.

We also did a little hackathon to do some dog-fooding: we've built a
Dapp that makes use of all components by the above teams. We plan
to open source it soon, stay tuned for that 😎.

There's a lot on the horizon and we're enthusiastic about the rest of this year!

![Athens 2022](.images/monthly-update/athens-2022.jpg)

### Spanish Twitter Space 🐦

[Hernando](https://github.com/hcastano) was a guest at the spanish Polkadot
Twitter Space. The space has been recorded:

* https://twitter.com/i/spaces/1MnGnkgmNdBJO
* https://twitter.com/i/spaces/1jMKgedkMgYJL

The network connection of the organizer had a bad day, hence it's two
recordings.

### StackExchange Public Beta

The [Substrate & Polkadot StackExchange](https://substrate.stackexchange.com/) site
has graduated from its private beta ‒ the site is now in public beta!

This means that the site is now indexed by search engines and can be
browser without any user account.

If you have any questions regarding ink! or smart contracts on Substrate this is
the place to be.

### Canvas Update

You may know that we were working on a common good smart contracts parachain
named Canvas. We've decided to put this project on hold. This gives us more
room to make ink! and the [`pallet-contracts`](https://github.com/paritytech/substrate/tree/master/frame/contracts)
as competitive as possible, as well as help parachain teams include those.
This is not to say that we'll never get back to Canvas, but as of right now
we're no longer working on this project.

## March 2022

### StackExchange Beta

We are participating in the Beta of [the Substrate StackExchange](https://substrate.stackexchange.com/) site!

If this StackExchange site gains traction it will be made available to the general public.
To reach this goal it's important to have the community engage there though.

Head over to [substrate.stackexchange.com](https://substrate.stackexchange.com/)
to ask us any questions (there is an `ink` tag)!

### ink! 3.0 🦑
The star of the show this month is the release of ink! 3.0:

- You can find the release notes [here](https://github.com/paritytech/ink/releases/tag/v3.0.0).
- We've also published a blog post with some more context:<br>
[ink! 3.0: Parity’s Rust-Based Language for WASM Smart Contracts Gets a Major Update](https://www.parity.io/blog/ink-3-0-paritys-rust-based-language-gets-a-major-update).

The team has been working on this release for a while. If you're a developer you're
probably aware of this thanks to the long list of release candidates (`v3.0.0-rcX`) we've
pushed out in preparation for the stable 3.0 release.

The main idea behind ink! 3.0 is that it's just Rust. The syntax is pretty much
identical, and all the tooling you know and love, such as `rust-analyzer` and Clippy,
just works.

Some other included changes worth highlighting:
- Reduced contract sizes for better performance in a parachain context.
- Support for cross-contract calls, making it easier to write complex applications.
- Trait support, allowing for a more Rusty development experience.

### cargo-contract 1.0
Alongside the release of ink! 3.0 we're also releasing [`cargo-contract`](https://github.com/paritytech/cargo-contract) in
its first stable version 1.0.
`cargo-contract` is a handy developer tool for building, testing, and deploying ink!
contracts.

Some notable updates in this release include:
- Support for uploading and calling contracts on a chain with `pallet-contracts`.
- Linting rules for ink! contracts, giving developers warnings about common errors.

### Delegate Call
Another update worth pointing out is the addition of `delegate_call`. What this allows is
a way for contracts to forward a call they received to another contract.

One use case for this is implementing a [Proxy Upgrade Pattern](https://docs.openzeppelin.com/upgrades-plugins/1.x/proxies) for smart contracts.

```
User ---- tx ---> Proxy ----------> Implementation_v0
|
------------> Implementation_v1
|
------------> Implementation_v2
```

This required some work in both `pallet-contracts` and ink!. Shoutout to the team over
at [Supercolony](https://supercolony.net/) for driving the development here!

We now have two example contracts for writing upgradeable contracts in ink!.
[See here](https://github.com/paritytech/ink/tree/master/examples/upgradeable-contracts)
for a deeper explanation.

### Workshop & Talk at EthDenver

[Hernando](https://github.com/hcastano) and [Achim](https://github.com/achimcc) went to EthDenver to
give a workshop and talk regarding ink! on the Substrate stage!

The recording is available [here](https://www.youtube.com/watch?t=7122&v=NrG3co6UWEg).
The monthly update has been moved to [https://ink.substrate.io/monthly-update](https://ink.substrate.io/monthly-update)!
18 changes: 10 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
Parity's ink! for writing smart contracts
</h1>

[![linux][a1]][a2] [![codecov][c1]][c2] [![coveralls][d1]][d2] [![loc][e1]][e2] [![matrix][k1]][k2] [![discord][l1]][l2]
[![linux][a1]][a2] [![codecov][c1]][c2] [![coveralls][d1]][d2] [![loc][e1]][e2] [![stack-exchange][s1]][s2]

[a1]: https://gitlab.parity.io/parity/ink/badges/master/pipeline.svg
[a2]: https://gitlab.parity.io/parity/ink/pipelines?ref=master
Expand All @@ -26,26 +26,28 @@
[k2]: https://riot.im/app/#/room/#ink:matrix.parity.io
[l1]: https://img.shields.io/discord/722223075629727774?style=flat-square&label=discord
[l2]: https://discord.com/invite/wGUDt2p
[s1]: https://img.shields.io/badge/click-white.svg?logo=StackExchange&label=ink!%20Support%20on%20StackExchange&labelColor=white&color=blue
[s2]: https://substrate.stackexchange.com/questions/tagged/ink?tab=Votes

> <img src="./.images/ink-squid.svg" alt="squink, the ink! mascot" style="vertical-align: middle" align="left" height="60" />ink! is an [eDSL](https://wiki.haskell.org/Embedded_domain_specific_language) to write smart contracts in Rust for blockchains built on the [Substrate](https://github.com/paritytech/substrate) framework. ink! contracts are compiled to WebAssembly.
<br/>

[Guided Tutorial for Beginners](https://docs.substrate.io/tutorials/v3/ink-workshop/pt1)&nbsp;&nbsp;&nbsp;&nbsp;
[ink! Documentation Portal](https://paritytech.github.io/ink-docs)&nbsp;&nbsp;&nbsp;&nbsp;
[ink! Documentation Portal](https://ink.substrate.io)&nbsp;&nbsp;&nbsp;&nbsp;
[Developer Documentation](https://paritytech.github.io/ink/ink_lang/)


<br/>
</div>

More relevant links:
* Talk to us on [Element][k2] or in [Discord][l2]
on the [`ink_smart-contracts`](https://discord.com/channels/722223075629727774/765280480609828864) channel
* [Substrate Stack Exchange](https://substrate.stackexchange.com/questions/tagged/ink?tab=Votes) ‒ Forum for getting your ink! questions answered
* [`cargo-contract`](https://github.com/paritytech/cargo-contract) ‒ CLI tool for ink! contracts
* [Contracts UI](https://paritytech.github.io/contracts-ui/) ‒ Frontend for contract instantiation and interaction
* [Substrate Contracts Node](https://github.com/paritytech/substrate-contracts-node) ‒ Simple Substrate blockchain which includes smart contract functionality
* [Substrate Stack Exchange](https://substrate.stackexchange.com/questions/tagged/ink/) - Forum for getting your ink! questions answered
* We post announcements on [Matrix][k2] and [Discord][l2] (in the
[`ink_smart-contracts`](https://discord.com/channels/722223075629727774/765280480609828864) channel).


## Table of Contents
Expand All @@ -71,10 +73,10 @@ If you want to have a local setup you can use our [`substrate-contracts-node`](h
It's a simple Substrate blockchain which includes the Substrate module for smart contract functionality ‒ the `contracts` pallet (see [How it Works](#how-it-works) for more).

We also have a live testnet on [Rococo](https://github.com/paritytech/cumulus/#rococo-)
called [Canvas](https://paritytech.github.io/ink-docs/canvas). Canvas is a Substrate based
called [Canvas](https://ink.substrate.io/canvas). Canvas is a Substrate based
parachain which supports ink! smart contracts. For further instructions on using this
testnet, follow the instructions in the
[our documentation](https://paritytech.github.io/ink-docs/canvas#rococo-deployment).
[our documentation](https://ink.substrate.io/canvas#rococo-deployment).

For both types of chains the [Contracts UI](https://paritytech.github.io/contracts-ui/)
can be used to instantiate your contract to a chain and interact with it.
Expand Down Expand Up @@ -245,7 +247,7 @@ The `#[ink::test]` procedural macro enables off-chain testing. See e.g. the [`ex

## Developer Documentation

We have [a very comprehensive documentation portal](https://paritytech.github.io/ink-docs),
We have [a very comprehensive documentation portal](https://ink.substrate.io),
but if you are looking for the crate level documentation itself, then these are
the relevant links:

Expand Down
8 changes: 4 additions & 4 deletions RELEASES.md
Original file line number Diff line number Diff line change
Expand Up @@ -385,9 +385,9 @@ ink! 3.0-rc4 is compatible with
- [`substrate-contracts-node`](https://github.com/paritytech/substrate-contracts-node) version `0.1.0` or newer.
- Install the newest version using `cargo install contracts-node --git https://github.com/paritytech/substrate-contracts-node.git --force`.

The documentation on our [Documentation Portal](https://paritytech.github.io/ink-docs)
The documentation on our [Documentation Portal](https://ink.substrate.io)
is up-to-date with this release candidate. Since the last release candidate we notably
added a number of [Frequently Asked Questions](https://paritytech.github.io/ink-docs/faq)
added a number of [Frequently Asked Questions](https://ink.substrate.io/faq)
there.

## Quality Assurance
Expand Down Expand Up @@ -416,7 +416,7 @@ of key improvements to our testing setup:
- Implemented the (unstable) `seal_rent_status` API ‒ [#798](https://github.com/paritytech/ink/pull/798).
- Implemented the (unstable) `seal_debug_message` API ‒ [#792](https://github.com/paritytech/ink/pull/792).
- Printing debug messages can now be achieved via `ink_env::debug_println!(…)`.
- See [our documentation](https://paritytech.github.io/ink-docs/faq#how-do-i-print-something-to-the-console-from-the-runtime)
- See [our documentation](https://ink.substrate.io/faq#how-do-i-print-something-to-the-console-from-the-runtime)
for more information.
- The examples have been updated to reflect this new way of printing debug messages.
- Added usage comments with code examples to the `ink_env` API ‒ [#797](https://github.com/paritytech/ink/pull/797).
Expand Down Expand Up @@ -477,7 +477,7 @@ ink! 3.0-rc3 is compatible with
## Added

- Implemented chain extensions feature for ink!.
- ink!'s official documentation portal: https://paritytech.github.io/ink-docs/
- ink!'s official documentation portal: https://ink.substrate.io/
- It is now possible to pass a `salt` argument to contract instantiations.
- Implemented fuzz testing for the ink! codebase.

Expand Down
2 changes: 1 addition & 1 deletion crates/storage/derive/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
//! structures that work along the `ink_storage` data structures by implementing
//! `SpreadLayout` and `PackedLayout` traits.
//!
//! See [Spread vs. Packed](https://paritytech.github.io/ink-docs/datastructures/spread-packed-layout)
//! See [Spread vs. Packed](https://ink.substrate.io/datastructures/spread-packed-layout)
//! for more details of these two root strategies.
//!
//! # Examples
Expand Down
2 changes: 1 addition & 1 deletion examples/delegator/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ In order to test this bundle of smart contracts you need to execute the
following steps.

You can upload the contracts using our [Contracts UI](https://paritytech.github.io/contracts-ui/).
If you want to test it locally, our [`substrate-contracts-node`](https://paritytech.github.io/ink-docs/getting-started/setup/#installing-the-substrate-smart-contracts-node)
If you want to test it locally, our [`substrate-contracts-node`](https://ink.substrate.io/getting-started/setup/#installing-the-substrate-smart-contracts-node)
is an easy way to get a local smart contract chain running.

1. Compile all contracts using the `./build-all.sh` script.
Expand Down
2 changes: 1 addition & 1 deletion examples/rand-extension/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

It demonstrates how to call a custom Substrate function from ink!.

See [this chapter](https://paritytech.github.io/ink-docs/macros-attributes/chain-extension)
See [this chapter](https://ink.substrate.io/macros-attributes/chain-extension)
in our ink! documentation for more details.

There are two parts to this example:
Expand Down
2 changes: 1 addition & 1 deletion examples/upgradeable-contracts/delegate-calls/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ In order to test it out you need to do the following:
`./upgradeable-flipper/target/ink/` folder.

In order to perform migrations and have proxy working for contracts with different
[storage layouts](https://paritytech.github.io/ink-docs/datastructures/spread-storage-layout),
[storage layouts](https://ink.substrate.io/datastructures/spread-storage-layout),
we use the [`Upgradeable`](upgradeable-flipper/upgradeable.rs) type
wrapper, which ensures that we write different fields of desired struct to different
storage locations, while also tracking the initialization status (e.g., we uploaded
Expand Down

0 comments on commit 961c7ef

Please sign in to comment.