Xion Global Wiki
Searchโ€ฆ
โ›“
Smart Contracts
Audited

Xion Global Smart Contracts

The Xion Global smart contracts running on the xDai chain powering the Xion Global shopping ecosystem.

Smart Contracts

XGHub

The hub contract is the central contract of the Xion Global architecture. It links to the latest individual modules and serves as the interaction point for important functions.
The hub also features general security functions like pause(), unpause() or setAuthorizedAddress(). The important and nice part about these functions is, that they automatically invoke the same function in every module. So if (in an emergency) the multi-sig calls the pause function of the hub, every module will automatically be paused in the same transaction.
You can find the contract here.

XGWallet

The wallet contract implements all the necessary features related to payments and funds. Users can deposit xDai as well as XGT in order to these funds to buy goods and services. Users can also withdraw() their funds at any time, which was important to us.
The other modules of the XG contract suite can interact with the wallet to process payments and pay out merchants. These functions (like payWithXGT or payWithXDai) can only be called via one of the other modules.
You can find the contract here.

XGFeatureRegistry

The Xion Global platform offers some features that have to be unlocked via a small payment in either xDai or XGT. The status of these features can be recorded for each user or merchant via the feature registry contract. E.g. the toggleFeatureUnlock() would be called by the backend to indicate that someone has unlocked a certain feature. The unlocked features of a user can be retrieved via functions like getUnlockedFeaturesOfUser().
In the future, we are potentially planning to upgrade this contract such that the unlocked features are represented via NFTs.
You can find the contract here.

XGSubscriptions

One of the corner stones of the Xion Global platform is the ability to handle subscriptions via the blockchain. This is implemented in the subscriptions contract. It offers functions like subscribeUser(), processSubscriptionPayment(), pauseSubscription() and cancelSubscription(). These functions are currently called by our backend (to save gas for the user). In the future, we also want to allow our users to call these functions directly.
The payments themselves are routed through the wallet contract mentioned above.
You can find the contract here.

XGPurchases

The second important part of the Xion Global platform are single billing purchases. These are handles by the purchases contract, offering simple functions like processPurchase() or processOneTimePayment(). The corresponding payment and potential cashback mechanism is handled by the wallet contract mentioned above.
You can find the contract here.

Cashbacks (Cashback Module)

In one of our last updates we also added the Cashback Module, allowing merchants and the platform to issue cashbacks to customers. These cashbacks are also implemented with the possibility of mini-vestings, where the cashback amount is distributed to the customers over a period of several days, weeks or months.
Cashbacks can directly be claimed via the general claim() function of the reward chest through our UI.
You can find the contract here.

Earning (Staking Module)

We recently added a way for merchants to auto-stake their XGT sale-earnings. This way merchants can earn compounded interest by automatically staking their XGT received from purchases. Currently merchants are earning a 150% APY.
We incorporated this functionality directly into our reward chest module system, so the earning part is implemented in the form of a StakingModule contract. Merchants can call the deposit() and withdraw() functions at any time(Stake or Unstake). Deposits of merchants that are auto-staking their sale-earnings through the staking module will not count towards the standard penalty, so they can withdraw their staked XGT without a penalty at all times.
The contract is built in a way so the rewards auto-compound each time someone interacts with the contract. This way, our users will receive even higher APYs!
You can find the contract here.

Upgradeability

We are leveraging the Upgradeability features by OpenZeppelin, allowing us to introduce features without changing the contract's address as well as fixing any unforeseen bugs that could lead to a financial loss for our users. The safety of our users and consequently their funds is of utmost importance to us! However, we are not using this feature for the token itself, in order to maintain decentralization and not even having the possibility to gain access to our users funds.