# Tutorials and Concepts

## 📖 Building Tips

### Developer Resources&#x20;

For developer resources on Serum and Solana: <https://github.com/project-serum/awesome-serum>

### RPC Servers

For a default list of RPC servers to use: <https://github.com/project-serum/awesome-serum#rpc-servers>

* Others may be less reliable

### Serum Market Data

If you want to consume Serum market data, you have the following options:

* Javascript program for on-chain calls: <https://github.com/project-serum/serum-js>
* REST server: <https://github.com/project-serum/serum-rest-server>
* Serum API: <https://docs.bonfida.com/#introduction>

### Mainnet, Devnet, Testnet

Developers are recommended to have (by default) both a mainnet and devnet/testnet version with a toggle to test the protocol on both, as there may be differences in performance that are useful to be able to test:

{% hint style="info" %}
It is useful to have a devnet or testnet version, and also a mainnet version for full testing
{% endhint %}

### Authenticating Transactions

If you need to authenticate transactions, the recommended course of action is to use the SPL wallet adapter, which is what e.g. [sollet.io](https://sollet.io) users to connect to DEXes.

{% hint style="info" %}
Note: you can build in auto-accepting as an option! <https://dex.projectserum.com/#/> uses this with [sollet.io](https://sollet.io).
{% endhint %}

Users will be prompted to click: “Automatically approve transactions from [https://dex.projectserum.com](https://dex.projectserum.com/)”

If they do, then for that session:

* As long as the URL is the same
* As long as the transaction contents match the expected contents (e.g. a DEX order)

It will not require clicking "accept".

This code is in <https://github.com/project-serum/sol-wallet-adapter>.

If you want your program to be auto-accepted, submit a PR (pull request) that adds it!

* Bonfida and others also sometimes connect.

{% hint style="info" %}
Developers are recommended to use the same conventions as e.g. [sollet.io](https://sollet.io) for the seed phrase and private key.
{% endhint %}

### Composability

Consider composing with existing apps:

* If your app needs liquidity you can trade on a DEX orderbook or swap
* If your app needs to mint tokens, consider using [https://spl-token-ui.com](https://spl-token-ui.com/)
* Check out <https://github.com/project-serum/awesome-serum> for ideas and tools

### Fees Going to SRM Governance

For fees going to SRM governance, you can assign to [this address](https://explorer.solana.com/address/7EEAZWuzNZTUSCdwrw1JS4eX9D8uTTL91owsk4GC3zNB/tokens) if you want.

## 🎓 Tutorials and Project Concepts <a href="#tutorials-and-projects" id="tutorials-and-projects"></a>

### 📈 Host a GUI

Want to help support the Serum ecosystem? Host a GUI and get a fraction of the fees!

* An open source GUI: <https://github.com/project-serum/serum-dex-ui>
* More about staking and voting: [ https://projectserum.com/#/staking-and-voting](https://projectserum.com/#/staking-and-voting)

{% content-ref url="how-to-host-a-gui-serum-academy" %}
[how-to-host-a-gui-serum-academy](https://docs.projectserum.com/serum-ecosystem/build-on-serum/how-to-host-a-gui-serum-academy)
{% endcontent-ref %}

### 🛠️ DEX Integration <a href="#dex-integration" id="dex-integration"></a>

A technical introduction to the Serum DEX can be found [here](https://docs.google.com/document/d/1isGJES4jzQutI0GtQGuqtrBUqeHxl_xJNXdtOv4SdII/edit?usp=sharing).

#### DEX Resources

* [DEX source code](https://github.com/project-serum/serum-dex)
* [Serum.JS](https://github.com/project-serum/serum-js), client-side JavaScript resources to connect to the DEX
* [Serum DEX UI](https://github.com/project-serum/serum-dex-ui), an implementation of a UI for the Serum DEX
* Testnet deployment of prototype DEX:
  * [DEX Program](https://explorer.solana.com/address/9JipvuvjcirpYf8mzYQtozXeYtQLWY67LaZCiANSMNgs)
  * [DEX Market](https://explorer.solana.com/address/2tJ2LVReFCZF81Ej4MAQHEr1kRSmk6QQ5XSnzjC9KJNj)
* Mainnet examples:
  * [DEX Program](https://explorer.solana.com/address/4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn)
  * [DEX Market](https://explorer.solana.com/address/8AcVjMG2LTbpkjNoyq8RwysokqZunkjy3d5JDzxC6BJa)
* [PySerum](https://github.com/serum-community/pyserum): Python client library for interacting with the Project Serum DEX.

### 🔁 Minting Tokens <a href="#minting-tokens" id="minting-tokens"></a>

* [SPL Token Creator UI](https://www.spl-token-ui.com/)
* [Bonfida Minter](https://bonfida.com/mint)
* [SPL Manager](http://splmanager.com/)

### 🧾 Token Contracts

* [Serum (SRM) SPL](https://explorer.solana.com/address/SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt)
* [Serum (SRM) ERC20](https://etherscan.io/token/0x476c5e26a75bd202a9683ffd34359c0cc15be0ff)
* [MegaSerum (MSRM) SPL](https://explorer.solana.com/address/MSRMcoVyrFxnSgo5uXwone5SKcGhT1KEJMFEkMEWf9L)
* [MegaSerum (MSRM) ERC20](https://etherscan.io/token/0x1320c8c64b9f2eAa851F70702e6C9FC1EE4E8Ce4)

### 🧾 Miscellaneous

* [Messaging App](https://github.com/kemargrant/soltalk) - Proof of Concept
* [AMM](https://github.com/solana-labs/solana-program-library/tree/master/token-swap) - Work-in-progress
* [SAMM](https://gitlab.com/OpinionatedGeek/samm)
  * [RFC](https://github.com/project-serum/rfcs/blob/master/text/0003-samm.md)
* **On-chain Pools:**
  * [A general preview](https://docs.google.com/document/d/1lmMZRKkxMFOtGOEZOFEKYL7syqv-4QT87F0o55fc35Y/edit)
  * [Work in progress code](https://github.com/project-serum/serum-dex/tree/pool-wip/pool)
* [**Bonfida**](https://bonfida.com/)**:**
  * [REST API](https://bonfida.com/blog/articles/serum-api) to get Serum market data
  * [GUI](https://github.com/dr497/serum-dex-ui)
  * [Wallet](https://github.com/dr497/spl-token-wallet)
