This course helps engineers with an Ethereum background quickly grasp smart contract development on the Internet Computer Protocol (ICP). Our goal is to streamline your journey towards learning how to program ICP smart contracts and utilize ICP’s Chain Fusion Technology
ICP smart contracts have the ability to create and send transactions to EVM-compatible blockchains (e.g. Ethereum, Optimism, and Base), as well as non-EVM chains like Solana or Bitcoin. This feature of the ICP blockchain is called Chain Fusion Technology.

Chain Fusion Technology is made possible by two key features of the Internet Computer Protocol: HTTP Outcalls and Threshold Signatures. Briefly,
Combined, these features enable canisters to create signed artifacts or transactions and submit them directly to Ethereum RPCs and Solana RPCs.
We will focuses on learning how to program an ICP canister written in Rust as well as its integration with the Ethereum and Solana blockchain. Future modules may potentially cover ICP's direct Bitcoin integration.
This course focuses on practical learning and efficiency. Where possible, we’ll put your existing Solidity experience to use. Bite-sized exercises are included to solidify ICP concepts, and key architectural ideas are explained through supporting articles.
Towards the end of this course, you’ll build a cross-chain bridge canister that facilitates message passing and token bridging between EVM chains (EVM ↔ EVM), as well as between EVM and Solana (EVM ↔ Solana).
This course assumes you already know Rust, including ownership, borrowing, and basic datatypes as these topics have been extensively covered by outside resources.
We would like to thank Ujjwal, Faybian Byrd, Serah and Moritz for their careful reviews and meaningful contributions. This work was supported by a grant from the Dfinity foundation.
If you want to suggest an edit or improvement, please open an Issue or submit a Pull Request on the GitHub repo: https://github.com/RareSkills/icp-for-evm.