Smart Contract Deployment
Follow the same process as deploying to Ethereum
The Gnosis Chain is an EVM based chain, meaning deployment steps are the same as deployment to Ethereum or other chains. The required changes consist of directing deployment to the proper RPC and network id.
You will also need a small amount of xDai to deploy a contract, and for any contract functions. There is no current xDai testnet, so your contracts will be live!
For testing purposes, it is recommended to first deploy to the Sokol testnet. After functionality is tested and confirmed, deploy to the Gnosis Chain!

Truffle Based Tutorial

The following tutorial is a bit outdated but the same principles apply.
​This tutorial on Kauri shows how to deploy a DApp to the POA Sokol test network. It can be adapted to the xDai network with a few minor tweaks.
1) For GC, edit the truffle.js file to the following:
const HDWalletProvider = require('truffle-hdwallet-provider');
module.exports = {
// See <>
// for more about customizing your Truffle configuration!
networks: {
xdai: {
provider: function() {
return new HDWalletProvider(
network_id: 100,
gas: 500000,
gasPrice: 1000000000
development: {
host: "",
port: 8545,
network_id: "*" // Match any network id
2) Run the truffle deployment to the Gnosis Chain.
truffle migrate --network xdai

Remix Tutorial

This tutorial uses Nifty Wallet or MetaMask and Remix to deploy to POA Sokol. To change the deployment chain, simply select (or configure with MetaMask) the xDai chain. To view your transactions on xDai, use BlockScout for xDai.
👩💻 Remix Tutorial​