Skate auction app is used to demonstrate how Stateless Apps tap into Skate to enable intent powered, crosschain compatible apps with a single application state.
Refer to [https://docs.skatechain.org/developers/stateless-app-cookbook] for more information on how to build your own Stateless App!
Stateless Applications are split into two components: Kernel and Periphery.
The kernel stores the core application logic and state variables for your app. It also taps into the set of standard libraries provided by Skate to enable intent powered, crosschain compatible apps with a single application state.
Conversely, the periphery serves as the user facing component to facilitate user actions on other periphery chains. This component resides on the external chains and retrieves its state from the kernel
src
├── app
│ ├── kernel
│ └── periphery
└── skate
├── common
├── kernel
└── peripherysrc/app
kernel: Contains core contract implementations related to the main functionality of the application.
periphery: Contains contracts that provide auxiliary functionalities to the core contracts.
src/skate
common: Contains shared utilities and helper contracts that are used across different modules.
kernel: Additional kernel-related contracts specific to the Skate project.
periphery: Additional peripheral-related contracts specific to the Skate project.
Here's a brief overview for the contracts used for the auction.
- SkateAuction.sol: contains the main functionalities required for auction
- SkateNFT.sol: contains the main functionalities required for NFT
- SkateApp.sol: contains the main functionalities required for intent processing, task creation that's used to interact with Skate
- SkateAuctionPeriphery.sol: contains the main functionalities required for auction
- SkateNFTPeriphery.sol: contains the main functionalities required for NFT
- SkateApp.sol: contains the main functionalities required for intent processing, task creation that's used to interact with Skate
$ forge build$ forge test$ forge fmt$ forge snapshot$ anvil$ forge script script/CONTRACT.s.sol:CONTRACT_NAME --rpc-url <your_rpc_url> --private-key <your_private_key>$ cast <subcommand>$ forge --help
$ anvil --help
$ cast --help