The sample demonstrates how to use the Simple Function Call (SFC) protocol for an ERC 721 token bridge.
The example has some application code to send some tokens from a "home" blockchain, where an ERC 721 was first created to a "remote" blockchain. The contracts used in the example are shown below.
The ERC721PresetMinterPauserAutoId is a standard ERC 721 contract from the Open Zeppelin project. It is the contract on the home blockchain that creates tokens.
The ERC721RemoteBlockchain is an ERC 721 contract that allows tokens to be minted with specific token ids. This is needed so that tokens from the home blockchain can be created on the remote blockchain.
The SfcErc721Bridge is the ERC 721 application layer bridge. An instance of this contract is deployed to each blockchain.
The SimpleCrosschainControl is the crosschain control contract for the Simple Function Call (SFC) protocol. An instance of this contract is deployed to each blockchain. This contract is the function call layer bridge.
Any messaging protocol can be used to verify events from source blockchains. In the diagram, the Attestor - Signer approach is used.
The EventAttestationVerifier contract decodes signed events. It uses the MessagingRegistrar to verify the event's signature(s).
The entry point example code is in Erc721TokenBridgeExample.java .