Please login or register.

Lightweight transaction creation

Hi, I am the developer of an open source multi-coin cryptocurrency platform called Moneywagon: https://github.com/priestc/moneywagon. Currently it supports BTC and BTC forks like LTC, DOGE, PPC, etc. The reason why it can support all those bitcoin forked currencies is because 99% of them are the same. Monero is not supported, but I want it to be supported. I am making this post because I want someone who is familiar with CryptoNote to help me understand how CryptoNote transactions are made.

Bitcoin's transaction encoding process works like such: You call a service that returns UTXO data. That UTXO data is passed into a bitcoin library like pybitcointools, BitcoinJ or Bitcore. The result is a transaction which you push to the network, then it gets mined into a block. LTC and DOGE use the exact same process, but I suspect Monero's method is quite a bit different.

Is there a Bitcore/BitcoinJ/pybitcointools like library for Monero? Is there a way to use Monero without needing to run a full node in the background? I found this: https://github.com/tippero/python-monero But it seems to only be a wrapper on top of the full node RPC interface. Is it possible to get coin data from an API service? I know Monero is supposed to be very private, which may make it impossible to build a wallet this way, but I don't know.

If Monero can get implemented in Moneywagon I think it would be very good for MOnero, as it would make it easier for people to build services that support Monero. For instance, multiexplorer.com runs on Moneywagon. If Moneywagon supports XMR, then multiexplorer will support XMR.

Replies: 4
dEBRUYNE posted 7 years ago Replies: 1 | Weight: 0 | Link [ - ]

Perhaps these links help:

http://moneroblocks.info/api

https://github.com/TheKoziTwo/xmr-integration

I am not entirely sure what you are asking. Could you perhaps clarify again?

Reply to: dEBRUYNE
priestc posted 7 years ago Replies: 1 | Weight: 0 | Link [ - ]

Bitcoin API's like Blockchain.info and Bitpay Insight contain the functionality to build a fully functional lightweight wallet without needing to run a full node. There is an API endpoint that is usually called "get UTXO" which returns the data that you use to make the transaction. The moneroblocks API doesn't seem to have a "get UTXO" endpoint. It has "get block data" and "get transaction data", which I don't think you can make a wallet out of, but maybe I'm wrong. There has to be some API endpoint that takes in your monero addresses, and returns the data that can be used to make a transaction.

I'll have to take a look at that PHP project you posted. Does it run without needing a full node?

Reply to: priestc dEBRUYNE
moneromooo posted 7 years ago Weight: 0 | Link [ - ]

You will have to either run a wallet, or write parts of what's in the wallet. You can use third party node though if you don't want to, or can't, run a full node.

You may want to look at https://github.com/tippero/tippero to see an example of wallet RPC usage. Or https://github.com/zone117x/node-cryptonote-pool in lib/paymentProcessor.js. You would typically let the wallet decide which outputs to use. There'd be a lot of things to write if you wanted to make raw transactions anew.

moneromooo posted 7 years ago Weight: 0 | Link [ - ]

You will need to scan the blockchain in order to know which outputs are the wallet's. However, you don't need to store the blockchain for this, you can use a third party node. If you don't want to run the wallet either, then you have to call the daemon RPC itself, and reimplement some of what's in the wallet code. Or you can link against the cryptonote_core and wallet libraries, and use those APIs, but they might be a bit low level for what you intend to do.