Testnet exchange

I’ve seen suggestions of making a testnet faucet. Perhaps we can do better than making a faucet.

We can try to build an exchange, where users can register an account, login, deposit, withdraw, and perhaps transfer to other users. A faucet account could automatically transfer some amount to all users once a day.
Limiting it to testnet grins should allow for drastically simplified security measures.

It could be open source and thus function as a demonstration of how to integrate grin into real exchanges.

I would certainly support a funding request for such a thing.

PS: Some open source exchange software is suggested at

PPS: it may be easier to start from a chat server, such as



Nice idea! it would be helpful for fearful average users.

Once I found this:



There are 2 ways to go about this:

  1. Use a full stack exchange engine and integrate grin - i’d say this is more realistic case but comes with a ton of code that has nothing to do with Grin and perhaps more work
  2. A small peoject with user registration and only deposit/withdraw of Grin - less realistic but the code is mostly relevant for Grin

I don’t know which I prefer myself, but agree it’s a good idea to have something like this both for us iterating on what the problems are and to serve as an example

1 Like

Yes, that’s also mentioned in that bitcoin.stackexchange.com thread linked to above.


This is what I talked about, would be nice exchange if only for Grin and existing stablecoins (fiat) derivatives.

Dream Big :grin:

1 Like

why just dont build some atomicswap with stable coins with list of order ?

1 Like

i don’t think we need a “realistic” example, there are probably tons of things only exchanges have faced so it wouldn’t make much sense to “try our best” to make it secure. It would be great to have a working example of how a minimal unsecure exchange interacts with grin’s wallet/node because that’s what exchanges need imo


Because no one would probably use it.

1 Like

If we built a realistic example, then it could be a good codebase for someone else to fork and turn into a real Grin exchange.

1 Like

i dont know how thise big exchange work and can by different that TO or some realistic example that we build

1 Like

My guess is that it’s not worth due to a lot of work and a little chance of someone actually doing a real exchange (imo it’s a lot of work to run an exchange). I would only make it realistic for the grin part (how to prevent known attacks)

1 Like

so wher is problem ? do this can help to list Grin on Binance and other big exchange? all thise small exchange will by soon support slatepack am not worry about . or maybe it would be enough to ask TO and he will give you a manual how he did it

1 Like

The idea that someone creates an anonymous Grin only exchange( no KYC/AML) that is trusted by the community/ gives back a percentage of fees sounds interesting. Like a remake of Galleon: Galleon — The World’s First Grin Exchange | by Galleon | Galleon Exchange | Medium

It’s a lot more work to build a separate Grin ++ implementation but someone did it. At least with an exchange there’s a clear business model.


it will no one use ther is not problem buy Grin without kyc or do you think people will believe more than TO?I would rather see it on the atomic swap which will be used one day in the future

1 Like

Well this is would be great too, for example for Grin to USDT vice versa. But is it cheaper than sending USDT over the Tron network? (This is just an example, because as far as I know the cheapest WD costs are currently USDT TRC 20)

1 Like

This is really a good doctrine. If it can be realized as soon as possible, I believe it will definitely play a positive role in the development of grin.

This is the most exciting news I’ve seen recently. Solving interactive transactions is the essence of money.

It could serve as a reference implementation and as a testbed for finding the optimal UX for deposit and withdrawal, so that exchanges don’t have to design everything from scratch. Additionally, wallet developers can use it for optimally integrating with this UX.

Currently, deposit and withdrawal on TO are working, but I find the implementation very basic in the way that it requires a number of manual steps. Copy the message, open the wallet, paste the message, sign it, copy it, open exchange again, paste the signed message, submit. I am counting 8 steps for the user, if you only count the steps that require moving fingers.

From a user’s standpoint, it would be easier if the slatepack message could be passed to the wallet with a single click, like clicking a grin:// link on the exchange, so that the walllet would be triggered automatically. The next step for the user after the first click would be to confirm signing the transaction in the wallet.

Ideally, the user would be done at this point after two clicks, which means that the wallet would have to pass the signed message back to the exchange automatically.

Maybe this behavior could be achieved with a browser extension that listens for grin:// links that contain the slatepack message and an optional response API address that the wallet can send the signed message to. Not only for exchanges, but also for chats with web interfaces, PMs and so on.

However, a testnet exchange could help with streamlining such UX processes across multiple wallets, so I think it would be better to have than not.

I’m leaning towards a dumbed down exchange with only withdrawals/deposits. Why? Because the benefit is in exploring the best UX and it being a hands-on tutorial how to integrate Grin. This gets obfuscated with all the other things a full stack exchange comes with. Having a realistic example is nice, but I highly doubt anyone would fork our example code and build on this (exchanges usually don’t do this and start with a clean stack and add BTC, ETH etc.).
IMO the goal should be answering the question of how do the existing exchanges integrate which can only be done in a non-terrifying way if we have a small example. I wouldn’t be surprised if we would come up with some reusable bash scripts/libs