The Gateway demo application show a basic examples of:
- Checking for the existence of a Gateway token on the frontend
- Issuing a token from the server side (gatekeeper signs & pays)
- Issuing a token from the client side (signed and paid by the user's wallet)
- Executing a transfer of SOL through a program that checks for the existence of the gateway token
A live demo can be accessed at https://demo.identity.com/protected-transfer/index.html.
The source code for the project is hosted on Github here. The following command will bundle the frontend and launch an express server serving both the static frontend content and the backend web service.
yarn demo
To configure the application to use a different gatekeeper, network or other settings.
The default frontend configuration can be found at frontend/src/config/default.js
, and can be overridden based on
the STAGE
environment variable at frontend/src/config/{STAGE}.js
module.exports = {
// The base58 encoded public key for the gatekeeper network
gatekeeperNetworkPublicKey58: 'tgnuXXNMDLK8dy7Xm1TdeGyc95MDym4bvAQCwcW21Bf',
// The solana cluster to use
solanaCluster: 'devnet',
// The endpoint base url for the backend
apiEndpointBaseUrl: 'https://gatekeeper-demo.identity.com',
}
The default backend configuration can be found at backend/src/config/default.js
, and can be overridden based on
the STAGE
environment variable at backend/src/config/{STAGE}.js
module.exports = {
// The base58 encoded private key for the gatekeeper
gatekeeperAuthoritySecretKey58: 'QzSdRKirjb3Dq64ZoWkxyNwmNVgefWNrAcUGwJF6pVx9ZeiXYCWWc4eBFBYwgP5qBnwmX3nA6PYQqLuqSuuuFsx',
// The base58 encoded public key for the gatekeeper network
gatekeeperNetworkPublicKey58: 'tgnuXXNMDLK8dy7Xm1TdeGyc95MDym4bvAQCwcW21Bf',
// The solana cluster to use
solanaCluster: 'devnet',
// The port to run the web server on
serverPort: 3000,
// Serve static content from the frontend from express (for local testing)
serveStatic: false
}
yarn workspace @identity.com/gateway-demo-frontend watch
This will launch the frontend webpack build, and automatically re-run on changes to the frontend project.
yarn workspace @identity.com/gateway-demo-backend watch
This will launch the backend express app, and automatically re-run on save. By default it will serve the content from
the frontend project at frontend/dist
;
The sample Solana program provided is developed using Anchor. You will need the following:
Build the program:
cd program
anchor build
If you wish to deploy the program on devnet, make sure to update the program ID. After a build, get the generated address by executing:
solana -k program/target/deploy/gateway_demo-keypair.json address
or replace it with your own Solana key.
Update the program ID in programs/gateway_demo/src/lib.rs
by replacing:
declare_id!("<your program id>");
Deploy the program:
anchor deploy --provider.cluster devnet