Pre-proposal: DASH integration with Godot Engine

punto

New Member
Aug 4, 2017
3
2
3
39
Hello,

I'm looking for funding to create a simple module for Godot Engine that provides integration with cryptocurrencies, specifically DASH, with the following features:
  • Ability to create addresses (private/public key pairs), possibly using the deterministic seed method.
  • Ability to create transactions and sign them using those private keys.
The module won't connect to the network, or interact with the blockchain in any way; that's up to the application (in this case the game being created by the user of the engine). Most likely the game will connect to a trusted node/server provided by the developer and use http/json (both already supported by the engine) to get address balances, unspent outputs, and publish their transactions.

The objective of this feature set is to have the least possible footprint on the final product; keep in mind that a video game is not a blockchain-centric product, so developers most likely wouldn't accept something that needs to be connected to the blockchain, download blocks on the background, etc.

The module will be MIT licensed, developed in C++. The mentioned features will be behind an abstract layer that I will eventually try to implement for other cryptocurrencies, but I'd like to start with DASH if this is approved.

I think there would be obvious benefits to this as it would create another "real world" use for DASH, and video games are often great ways to popularize technologies or concepts.

Budget allocation:

5 Dash: project proposal cost
12 Dash: programmer in charge of DASH specific code
12 Dash: programmer in charge of Godot Engine specific code (most likely myself)
Total: 29 Dash

About Godot Engine:

Godot is an advanced, feature-packed, multi-platform 2D and 3D open source game engine. It's currently being used by thousands of developers to create mostly mobile and PC games, our Steam Spy page shows 150k installations and 90k users via Steam, although about 2x more people download it directly from our website. We are currently the most popular open source solution, and among the top game engines in general. The engine was published a few years ago, but development started around 2008

About me:

My name is Ariel Manzur, I'm one of the creators of Godot. I work in the games industry, but I'm interested in blockchain technology, and I'd like to explore more ways to combine both industries.

I'd love to hear any feedback, I'm not familiar with this process.

Thanks!

Ariel.
(edit: added links)
 
Last edited:

Macrochip

Active Member
Feb 1, 2015
224
185
103
The benefits towards Dash do not convince me. In the end it's up to the game developers whether they make actual use of it or not and the chances are as good as zero. There is no active effort to promote Dash or its use in any way. You even confirm this by saying "least possible footprint".

I'd have to pass on this one.
 

stan.distortion

Active Member
Oct 30, 2014
848
497
133
Could be good, games have massive potential for adoption and your prices for integration don't seem excessive but it might only have temporary benefits as the DAPI should make that kind of integration almost trivial. I don't think the potential for adoption is trivial though, not at all :)
 

UdjinM6

Official Dash Dev
Dash Core Team
Moderator
May 20, 2014
3,638
3,538
1,183
Welcome!

I'm not sure what kind of DASH-specific code this would require, you can create addresses and txes via rpc (and it's not DASH-specific in any way, unless we are talking about PS and IS but I doubt you need that in MVP). For Godot Engine specific code, I guess it's just a wrapper for more or less the same functions which are already implemented in Dash/Bitcoin Core or any other c++ implementation, doesn't sound like a huge amount of work either. But most importantly, I don't quite understand what's the purpose of this module - ok, one can create addresses and sign txes (still relying on some 3rd-party server to send them)... why would one want that? If you are going to rely on 3rd-party service anyway why don't you just use API-endpoints of existing services like https://www.coinpayments.net/apidoc to accept payments (increase in-game balance) https://www.coinpayments.net/apidoc-create-transaction and to withdraw them to user's wallet (reduce in-game balance) https://www.coinpayments.net/apidoc-create-withdrawal? What are the benefits of having it implemented your way?
 
  • Like
Reactions: stan.distortion

punto

New Member
Aug 4, 2017
3
2
3
39
Hi, thanks for the feedback. I'll reply to a few points here.

- I'm open to adding some promotion effort, but I don't know how to lead that, my expertise is only in programming, that's why I only included that part
- On the low footprint, I think it's a feature. This is intended to be used in a product where it would be at most complimentary to the main content, which in this case is a game. It's not a wallet or a node or anything centered in cryptocurrency. So we can't expect the client to host a blockchain or be using bandwidth on the background, it would alienate the end users in my opinion
- The reason to implement address creation and signing on the client is I'd like to avoid transmitting a user's private keys over the network, or make them give up their keys completely to a 3rd party. Of course we could put everything on a server and have the client only communicate with it, that would even back my previous point of keeping a low footprint on the client, but I think this is a good balance between protecting the user's keys and not burdening them

I agree in general that I'm not thinking in any specific use for this, "increase in-game balance, withdraw to the user's wallet" is obviously a good example, but others might use it in other ways. But that's sort of my thing :) I created a game engine, not a specific game, users take it and do their thing with it.
 

UdjinM6

Official Dash Dev
Dash Core Team
Moderator
May 20, 2014
3,638
3,538
1,183
- ... It's not a wallet ...
- The reason to implement address creation and signing on the client is I'd like to avoid transmitting a user's private keys over the network, or make them give up their keys completely to a 3rd party. ...
Hmmm... the moment you start to manage user's private keys - it's a wallet.

...
I agree in general that I'm not thinking in any specific use for this, "increase in-game balance, withdraw to the user's wallet" is obviously a good example, but others might use it in other ways. But that's sort of my thing :) I created a game engine, not a specific game, users take it and do their thing with it.
I'm pretty sure that all (or at least most :)) of other modules where created with some use case in mind, like, I don't know, navigation to move things via paths, or physics to let things move naturally or whatever. Creating cryptocurency module to be able to create addresses and txes on the client (and turning it into a wallet)... why would this be helpful for a game dev? What's the use case? Correct me if I'm wrong but usually, it works like this: you as a game dev would like to receive payments from your users for some in-game currency or stuff, you don't expect your users to receive payments (in fiat) in your game. Or are we talking about replacing an in-game currency ("crystals"/"gold"/etc) and removing a central payments/balances server/service and using a global decentralized crypto-currency as an in-game currency with no intermediaries (including the game dev himself)?
 

punto

New Member
Aug 4, 2017
3
2
3
39
Hmmm... the moment you start to manage user's private keys - it's a wallet.

I'm pretty sure that all (or at least most :)) of other modules where created with some use case in mind, like, I don't know, navigation to move things via paths, or physics to let things move naturally or whatever. Creating cryptocurency module to be able to create addresses and txes on the client (and turning it into a wallet)... why would this be helpful for a game dev? What's the use case? Correct me if I'm wrong but usually, it works like this: you as a game dev would like to receive payments from your users for some in-game currency or stuff, you don't expect your users to receive payments (in fiat) in your game. Or are we talking about replacing an in-game currency ("crystals"/"gold"/etc) and removing a central payments/balances server/service and using a global decentralized crypto-currency as an in-game currency with no intermediaries (including the game dev himself)?
Absolutely, the most obvious application is to have a mini-wallet inside a game, and use it to give rewards to a user, maybe trade with other users in-game, accept micro-payments for extra content, etc.
It's true that most of the stuff in Godot was made with a use case in mind, but it's also true that we've been surprised by developers using it in unexpected ways, I bet it's happened to you too. I'm not trying to be like "1- put bitcoins in game 2- ??? 3- profit!", I think the basic use case is there, I just tend to be more open ended when it comes to developer tools, they might surprise you