API-Referenz (JSON-RPC) – Bitcoin Wiki

What naming convention should I use for a JSON RPC client API designed for multiple languages?

This is the documentation with the original RPC client API specification. The naming convention in the specification is camel case.
Naming conventions might differ in subtle ways for different languages (camel case vs. pascal case), but for some conventions like snake case (Python) or Swift's Fluent Usage API changing the names in the original specification might increase the cognitive load when using the API for those already familiar with the specification.
When searching for different JSON RPC APIs on GitHub, some implementations seem to take advantage of reflection to intercept method calls and pass them to RPC request "as is" so method names for that language are the same as in the original spec. If reflection is not available the names are hardcoded and are mostly the same as the spec, changing only the capitalization of letters for some languages.
Some examples:
Not using Fluent Design in Swift
https://github.com/fanquake/CoreRPC/blob/masteSources/CoreRPC/Blockchain.swift https://github.com/brunophilipe/SwiftRPC/blob/masteSwiftRPC/SwiftRPC+Requests.swift
Not using snake case in Ruby
Changing method names to pascal case in C#
submitted by rraallvv to learnprogramming [link] [comments]

Tesi di laurea - come decodificare le transazioni in Bitcoin e creare un database

Buonasera a tutti, sto per terminare un Master in IT Project Management e sto lavorando alla tesi. Il mio progetto consiste nel creare un database a grafi (con Neo4j) contente le transazioni tra indirizzi Bitcoin; ogni nodo del grafo rappresenta un indirizzo ed i lati (edges) rappresentano le transazioni, in modo da creare una mappatura delle transazioni economiche tra gli utenti.
Ora, per fare ciò necessito di collezionare i dati sulle transazioni in un formato su cui possa lavorare in seguito (Neo4j accetta il CSV ed io penso che andrò per quello se è possibile). L'unico modo per ottenere i dati in un formato leggibile e su cui possa costruire una query è fare una RPC) su Bitcoin Core ed ottenere i dati in questo modo.
Il problema è che il mio corso è improntato più sull'IT Management e le mie conoscenze di informatica non mi permettono di capire bene come implementare la RPC.
C'è qualcuno di voi che ha già fatto qualcosa di simile in passato o se ne intende e saprebbe consigliarmi?
submitted by Ferribotte to ItalyInformatica [link] [comments]

Best API for blockchain?

I'm a developer and I would like to play around with data viz on the blockchain. Does anyone have experience using an API that can return data for all transactions in JSON? Since this is a 'universal ledger', it should exist, right?
I'd use blockchain.info but I remember hearing that blockchain.info does not actually have all transactions, but please correct me if I'm wrong.
submitted by relganz to Bitcoin [link] [comments]

I gathered a bunch of data from my node and made a site to display it

I gathered a bunch of data from my node and made a site to display it
https://www.nodeupdate.com/ (updated regularly)
I was surprised by how much useful information you can get from querying a node. I built this site using basic Bitcoin Core RPC commands like these: https://en.bitcoin.it/wiki/API_reference_(JSON-RPC))
I am still working on the page, and hoping to have charts soon.
submitted by FunOptimizer42 to Bitcoin [link] [comments]

How does blockchain.info analyze the block chain?

I am wanting to look at a handful of things on the block chain (primarily because I just finished finals and am bored and need a new project) but using blockchain.infos API isn't possible because I would go through the limit in like 2 minutes.
Since I have a copy of the blockchain, I was wondering if there is any public API to analyze it? Primarily current wallet balance, number of transactions made, last transaction made, and if they have made any transactions with a list of pre-determined addresses.
Any and all help is greatly appreciated!
submitted by bobert5696 to Bitcoin [link] [comments]

The log files of wallet

I am planning on starting a small online business (a web game mainly and freelance programming). And I plan on selling any service or VIP with doge coins. I would like to have any purchase credited automatically (like with paypal). As a passionate programmer I like to write everything for myself. At the moment I found a way to potentially do this using the tipbot: Hey KhaibarWow, you have received a Ð10 Dogecoin ($0.004) tip from mumzie. That message is easy to parse. However having people sign up on reddit, register with tipbot, upload funds then tip me... nah.. it's challenging enough to get people to convert $ to Dogecoin to begin with. So i am searching for another method. I am still syncing and I can see the log file being spammed with logs related to syncing. So I thought this would be better.... using the doge wallet's log files to process incoming payments.
Can someone please post a log of a receive payment? and does its format allow processing? as in does it come with label? like you received X dodge with label 'LabelNameAddedBySender'. The label can be used to know which game account or which email made the 'purchase'.
And naturally is such a thing not against any TOS?
Many thanks :)
submitted by KhaibarWow to dogecoindev [link] [comments]

How does a developer accept bitcoin and then automatically credit an account?

Let's say you wanted to write a poker app, is there an API to accept coins? How do you know which account to credit for an address. Is there information available that I can read up on to understand this better?
submitted by geareddev to Bitcoin [link] [comments]

1mb Fork Txn

Enclosed find a signed 1mb txn (999,957 bytes), that if mined will fork the network. TxnID: bbb67fc3320d1e9a58c7cd0bb5ead2cff87b243e089e4a21dad669ba28703f32
The outputs of this transaction have the following function, designated by their prefix:
The 1mb signed txn: https://anonfile.com/N2T4Aeb0bb/1mbtxn.txt
Once a client is available that will support relay of this txn, the console interface will likely not support it. To push this txn you'll have to use the RPC interface with a script https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
rpc_connection = AuthServiceProxy("http://%s:%[email protected]:8332"%(rpc_user, rpc_password))
txn = []
f = open('1mbtxn.txt', 'r') #This is the above linked txt file containing the txn
txn = f.read()
if you get this error, your client does not support this txn
64: tx-size
submitted by 1MBforKTR1gAqRLkNbQg to btc [link] [comments]

Anyone knows about PHP, Python, or Javascript Bitcoin mining interfaces? I don't want to join existing pools, but rather create my own

submitted by the-ace to Bitcoin [link] [comments]

Ravencoin Open Developer Meeting - 1/4/2019

[14:04] Hi everyone! [14:04] :dabbitwave: [14:04] Hey Everybody! [14:04] Hello 😃 [14:04] Sorry we're getting started a bit late. [14:04] Topics: SLC Meetup (March 15th) [14:04] 👋 [14:04] Roadmap breakdown - posted to github [14:05] IPFS (integration) [14:05] greetings 👋 [14:05] So, SLC Meetup on the 15th! [14:05] Great! [14:05] Hi! [14:06] Hi all — a special thanks to the developers and congratulations on an amazing first year!!! # [14:06] <[Dev] Blondfrogs> Hello Everyone! [14:07] We have a tentative agenda with @Tron , @corby speaking. [14:08] We would like to have nice walkthrough of the Raven DevKit for the meetup. [14:08] We are planning on hosting a meetup in SLC at the Overstock building on March 15th from 6:00pm-9:00pm. It is free admission, but there is a page on meetup.com where people can rsvp so that we have a somewhat accurate headcount for food. [14:08] sup guys [14:08] hey russ [14:09] We are planning on having a few speakers and have allotted a bit of time at the end for people to meet and greet each other. [14:09] can you guys link us to the page somewhere when thats available? 😄 [14:10] free food?! [14:10] todays topic? [14:10] yeah can we indicate pepperoni pizza [14:10] Sounds good to me @Jeroz Nothing ordered yet though. 😃 [14:10] only pepperoni pizza is served at true blockchain meetings right [14:10] :blobhide: [14:10] Absolutely. The itinerary just needs to be finalized and then I'll make a broad post about the rest of the details. [14:11] https://www.meetup.com/Salt-Lake-City-salt-lake-city-Meetup/ [14:11] 😭 so far away [14:11] West Coast! [14:11] @MTarget But there's pizza, so worth the travel time. [14:11] lol [14:12] I'll be watching the stream if its available since i'm from montreal/canada 😛 [14:12] Ah yes, I love $300 pizza 😉 [14:12] as long as I get to see your smiling faces @Tron @RavencoinDev then it's worth the time [14:12] We'll be there. [14:12] We'll be messaging additional details as they get finalized. [14:12] Greeting and salutations! [14:12] sup [14:13] Hey, $300 is considerably cheaper than 2 $3,700,000 pizzas. [14:14] Ok, switching topics... [14:14] yeah its a way to fly, [14:14] question is whether those piza's will be paid for in RVN coin or not :ThinkBlack: [14:14] Roadmap [14:14] It hasn't changed, just added some detail. [14:14] https://github.com/RavenProject/Ravencoin/tree/masteroadmap [14:15] nice [14:15] This now links to a breakdown for messaging, voting, anti-spam, and rewards (dividends) [14:15] will there be any additional RPC functionality coming in the future, thinking in terms of some functions that are only available in ravencore-lib [14:15] apologies if now is not time to ask questions, i can wait for later [14:15] "Phase 7 - Compatibility Mode" - that's new 😮 [14:15] The protocol for messaging is pretty well established, but the rest isn't in stone (code) yet. [14:16] can you give us details on compatibility mode? [14:16] In broad brush strokes. [14:17] The idea is to allow ravend to act as a daemon that looks like a single coin. [14:17] so ravend that only works with the bitcoin asset? [14:18] interesting [14:19] So you start it with an option to only work with a single asset/token account or something? [14:19] hmm compelling what is the reason for this? some kind of scale or performance? [14:19] ^ [14:19] Example: Configure ravend to listen for transfer RPC call for senttoaddress or sendfrom, but for a specific asset. This would allow easy integration into existing system for assets. [14:20] Only the daemon or the whole wallet UI? [14:20] yeah thats great, rpc functions dont allow us to do this yet, if i recall [14:20] or at least we depend more on ravencore lib [14:20] so like asset zmq [14:20] that's smart [14:20] @Tron it also sounds like it makes our life easier working with RPC, instead of core all the time for some functionality [14:21] if i understand correctly anyways [14:21] So you could run numerous instances of ravend each on their own network and RPC port, each configured for a different asset. You would need some balance of RVN in each one to cover transaction fees, then. [14:21] id be curious to know what all the advantages are of this [14:21] one more question, how would i decentralize the gateway between bitcoin mainnet/ravencoin mainnet? in the current RSK implementation they use a federated gateway, how would we avoid this? [14:21] it sounds neato [14:21] Just the daemon. The alternative is to get exchanges to adapt to our RPC calls for assets. It is easier if it just looks like Bitcoin, Litecoin or RVN to them, but it is really transferring FREE_HUGS [14:22] That makes sense. Should further increased exchange adoption for each asset. [14:22] hmm yeah its just easier for wallet integration because its basically the same as rvn and bitcoin but for a specific asset [14:22] so this is in specific mind of exchange listings for assets i guess [14:23] if i understand rightly [14:23] @traysi Gut feel is to allow ravend to handle a few different assets on different threads. [14:23] Are you going to call it kawmeleon mode? [14:23] Lol [14:23] I read that as kaw-melon mode. [14:24] same lol [14:24] so in one single swoop it possible to create a specific wallet and server daemon for specific assets. great. this makes it easier for exchanges, and has some added advantages with processing data too right? [14:24] Still keeping a RVN balance in the wallet, as well, Tron. How will that work is sendtoaddress sends the token instead of the RVN? A receive-RVN/send tokens-only wallet? [14:25] @traysi Yes [14:25] sendtoaddress on the other port (non RVN port) would send the asset. [14:25] This will be a hugely useful feature. [14:25] ^ [14:26] @Tron currently rpc function not support getaddresses senttowallet and this has to be done in ravencore lib, will this change you propose improve this situation [14:26] Config might look like {"port":2222, "asset":"FREE_HUGS", "rpcuser":"hugger", "rpcpass":"gi3afja33"} [14:26] how will this work cross-chain? [14:28] @push We'd have to go through the rpc calls and work out which ones are supported in compatibility mode. Obviously the mining ones don't apply. And some are generic like getinfo. [14:28] ok cool 👍 cheers [14:29] for now we continue using ravencore lib for our plans to keep track i just wondering if better way [14:29] as we had some issue after realising no rpc function for getting addresses of people who had sent rvn [14:29] @push | ravenland.org all of the node explorer and ravencore-lib functionality is based on RPC (including the addressindex-related calls). Nothing you can't do with RPC, although I'm not sure of the use cases you're referring to.. [14:29] interesting, so ravencore lib is using getrawtransaction somehow [14:29] i thought this may be the case [14:29] that is very useful thankyou for sharing this [14:30] look into addressindex flag and related RPC calls for functions that operate on addresses outside your wallet [14:30] thank you that is very useful, tbh i am not very skilled programmer so just decoding the hex at the raven-cli commandline was a challenge, i shall look more into this, valued information thanks as this was a big ? for us [14:31] Ok, things have gone quiet. New topic. [14:31] IPFS (integration) [14:31] GO [14:33] ... [14:33] <[Dev] Blondfrogs> So, we have been adding ipfs integration into the wallet for messaging. This will allow the wallets to do some pretty sweet stuff. For instance, you will be able to create your ipfs data file for issuing an asset. Push it to ipfs from the wallet, and add the hash right into the issuance data. This is going to allow for a much more seamless flow into the app. [14:34] <[Dev] Blondfrogs> This ofcourse, will also allow for users to create messages, and post them on ipfs and be able to easily and quickly format and send messages out on the network with ipfs data. [14:34] It will also allow optional meta-data with each transaction that goes in IPFS. [14:34] will i be able to view ipfs images natively in the wallet? [14:34] <[Dev] Blondfrogs> Images no [14:34] We discussed the option to disable all IPFS integration also. [14:35] @russ (kb: russkidooski) Probably not. There's some risk to being an image viewer for ANY data. [14:35] No option in wallet to opt into image viewing? [14:35] cool so drag and drop ipfs , if someone wanted to attach an object like an image or a file they could drag drop into ui and it create hash and attach string to transaction command parameters automatically [14:35] We could probably provide a link -- with a warning. [14:35] nomore going to globalupload.io [14:35] :ThinkBlack: [14:35] I understand that the wallet will rely on globalupload.io. (phase 1). Is it not dangerous to rely on an external network? Or am I missing something? [14:36] hmm [14:36] interesting, i suppose you could hash at two different endpoints and compare them [14:36] if you were that worried [14:36] and only submit one to the chain [14:36] You will be able to configure a URL that will be used as an IPFS browser. [14:36] Oh ic [14:36] you wont flood ipfs because only one hash per unique file [14:36] <[Dev] Blondfrogs> There are multiple options for ipfs integration. We are building it so you can run your own ipfs node locally. [14:36] <[Dev] Blondfrogs> or, point it to whatever service you would like. e.g. cloudflare [14:36] this is very cool developments, great to see this [14:37] Just like the external block explorer link currently in preferences. [14:37] @[Dev] Blondfrogs what about a native ipfs swarm for ravencoin only? [14:37] We have discussed that as an option. [14:37] @push | ravenland.org Considering having a fallback of upload through globalupload.io and download through cloudflare. [14:37] <[Dev] Blondfrogs> @russ (kb: russkidooski) We talked about that, but no decisions have been made yet. [14:37] yeah, i would just use two endpoints and strcompare the hash [14:37] as long as they agree good [14:37] submit tran [14:38] else 'potentially mysterious activity' [14:38] ? [14:38] if you submitted the file to ipfs api endpoints [14:38] Will the metadata just be a form with text only fields? [14:39] and then you would get 2 hashes, from 2 independent services [14:39] that way you would not be relying on a central hash service [14:39] and have some means of checking if a returned hash value was intercepted or transformed [14:39] i was answering jeroz' question [14:40] about relying on a single api endpoint for upload ipfs object [14:40] We have also kicked around the idea of hosting our own JSON only IPFS upload/browse service. [14:41] I have a service like this that is simple using php [14:41] we only use it for images right now [14:41] but fairly easy to do [14:41] Yup [14:42] Further questions about IPFS? [14:43] contract handling? file attach handling? or just text fields to generate json? [14:44] trying to get an idea of what the wallet will offer for attaching data [14:44] Probably just text fields that meet the meta-data spec. [14:44] ok noted [14:44] What do you mean by contract handling @sull [14:45] We won't prevent other hashes from being added. [14:45] asset contract (pdf etc) hash etc [14:45] <[Dev] Blondfrogs> also, being able to load from a file [14:45] got it, thanks [14:47] Let's do some general Q&A [14:48] Maybe just a heads up or something to look for in the future but as of right now, it takes roughly 12 hours to sync up the Qt-wallet from scratch. Did a clean installation on my linux PC last night. [14:48] Any plans or discussions related to lack of privacy of asset transfers and the ability to front run when sending to an exchange? [14:48] ^ [14:48] Is there a way to apply to help moderate for example the Telegram / Discord, i spend alot of time on both places, sometimes i pm mods if needed. [14:49] Any developed plans for Asset TX fee adjustment? [14:49] also this^ [14:49] @mxL86 We just created a card on the public board to look into that. [14:49] General remark: https://raven.wiki/wiki/Development#Phase_7_-_Compatible_Mode = updated reflecting Tron's explanation. [14:49] @mxL86 That's a great question. We need to do some profiling and speed it up. I do know that the fix we added from Bitcoin (that saved our bacon) slowed things down. [14:50] Adding to @mxL86 the sync times substantially increased coinciding with the asset layer activation. Please run some internal benchmarks and see where the daemon is wasting all its cycles on each block. We should be able to handle dozens per second but it takes a couple seconds per block. [14:50] @BW__ no plans currently for zk proofs or anything if that's what you're asking [14:50] You are doing a great job. Is there a plan that all this things (IPFS) could be some day implemented in mobile wallet? Or just in QT? [14:50] i notice also that asset transactions had some effect on sync time as we were making a few. Some spikes i not analysed the io and cpu activity properly but will if there is interest [14:51] we are testing some stuff so run into things i am happy to share [14:51] @BW__ Might look at Grin and Beam to see if we can integrate Mimble Wimble -- down the road. [14:51] yeees [14:51] @J. | ravenland.org work with the telegram mods. Not something the developers handle. [14:51] i love you [14:51] @J. | ravenland.org That would be best brought up with the operators/mods of teh telegram channel. [14:51] @corby @Tron thnx [14:51] @S1LVA | GetRavencoin.org we're planning on bumping fees to... something higher! [14:51] no catastrophic failures, just some transaction too smals, and mempool issues so far, still learning [14:52] @corby i thought that this may happen :ThinkBlack: [14:52] @corby x10? 100x? 1000x? Ballpark? [14:52] Definitely ballpark. [14:52] 😃 [14:52] 😂 [14:52] Is a ballpark like a googolplex? [14:53] @push | ravenland.org asset transactions are definitely more expensive to sync [14:53] yes yes they are [14:53] they are also more expensive to make i believe [14:53] 10,000x! [14:53] as some sync process seems to occur before they are done [14:53] @traysi ★★★★★ thanks for the suggestions we are going to be looking at optimizations [14:53] But, it is way slower than we like. Going to look into it. [14:53] i do not understand fully its operation [14:53] 1000x at minimum in my opinion [14:53] its too easy to spam the network [14:54] yes there has been some reports of ahem spam lately [14:54] :blobhide: [14:54] 😉 [14:54] cough cough ravenland [14:54] @russ (kb: russkidooski) we're in agreement -- it's too low [14:54] default fee 0.001 [14:54] ^ something around here [14:54] @corby yep we all are i think [14:55] waaay too low [14:55] meaningful transactions start with meaningful capital expense [14:55] though there is another scenario , there are some larger volume, more objective rich use cases of the chain that would suffer considerably from that [14:55] just worth mentioning, as i have beeen thinking about this a lot [14:55] there are some way around, like i could add 1000 ipfs hashes to a single unique entity, i tested this and it does work [14:56] @russ (kb: russkidooski) What would you suggest. [14:57] I had a PR for fee increase and push back. [14:57] Ignore the push back. 0.001 RVN is not even a micro-farthing in fiat terms [14:57] definitely around 1000x [14:57] Vocal minority for sure [14:57] ^ yep [14:57] @russ (kb: russkidooski) That sounds reasonable. [14:57] Couple hundred Fentons [14:58] right now an asset transaction is 0.01 of a penny essentially [14:58] 1 RVN would work now, but not when RVN is over $1. [14:58] yes exactly [14:58] Hi. Late to the party. [14:58] We are also talking about a min fee. The system will auto-adapt if blocks fill up. [14:58] im thinking tron, some heavy transaction use cases would fall out of utility use if that happened [14:58] so whats the thinking there [14:59] is there a way around the problem, bulked ipfs hash transactions? [14:59] 1000x would put us around btc levels [14:59] maybe a minimum 500x? [14:59] @russ (kb: russkidooski) Agreed. [14:59] <[Dev] Blondfrogs> It is time to wrap it up here. Everyone. Thank you all for your questions and thoughts. We will be back in 2 weeks. 😃 [14:59] Small increase and review. [14:59] Thanks all! [14:59] Cheers. [15:00] yeah sorry for 1 million questions guys hope i didnt take up too much time [15:00] cheers all 👍 [15:00] Thanks everyone [15:00] Thanks everyone for participating!!! [15:00] That is what we are here for [15:00] 100x-500x increase, 1000x maximum [15:00] 🍺

submitted by Chatturga to Ravencoin [link] [comments]

BitN00B: Help with Python/JSON call : getNewAddress(account) - fail

When making a JSON call, RPC to bitcoind, what is "account" parameter in getNewAddress(account).
Does anyone have actual code to demo this? This is frustrating given how much time I have spent ( a day ),
trying to get this to work in code, trying different things, googling all over, following things to a dead end.

In my Bitcoin QT, I see no reference to "account", I don't know what to put there as a parameter.


If I leave it blank, or I make up something to put there, I get a socket timeout.
I can successfully call: getblockchaininfo() (no params), and a few others with no socket timeout, but not getNewAddress. Anything and everything requiring a parameter fails.
Also if anyone can help, I please need a clear concise example of sending a transaction. I can find no good code examples on how to create a raw transaction and send with any Python/RPC/Bitcoind library out there. None. It should not take more than a few lines of code to send a transaction.
  1. set variables in a data structure
  2. make a call to send the transaction (that's it). The library will take params from the data structure, construct a raw transaction, convert that raw transaction to the format it needs when sending over http (json/rpc), as it does and I understand it to work that way.
    I would like to have the raw transaction printed out to debug, both raw transaction and the actual hex code that is sent.
    Thank You,
submitted by ThisCryptoFail to Bitcoin [link] [comments]

How to accept Monero

If you are reading this, you would like to accept Monero as a currency. But how could you accept Monero?
1st option: Monero Integrations
Website: http://monerointegrations.com
"Monero Integrations" is a project started by serhack during May 2017. The main goal is avoiding third parties, in fact the monero integrations payment gateways use monero-wallet-rpc in order to get the integrated address and check for payment confirmation.
serhack opened two ffs in order to increase the development of payment gateways. The payment gateways are FREE, no logging, no third parties. You could ask in this subreddit, if something doesn't work well!
Payment gateways for Monero:
1.b option: Kasisto
Kasisto is a Point of Sale payment system to accept the cryptocurrency Monero. The only requirement is an internet connection, there are no third parties involved.
To be fast (confirmation within seconds), Kasisto accepts unconfirmed transactions.
Github repository : https://github.com/amiuhle/kasisto
2nd option: Globee
Website: https://globee.com
GloBee is a startup company, which began development in 2014. Globee web application allows online merchants to accept payments through credit cards and a host of cryptocurrencies, while being settled in Bitcoin, Monero or fiat currency. This allows merchants to reach a wider variety of customers, while not needing to invest in additional hardware to run cryptocurrency wallets or accept the current instability of the cryptocurrency market.
The team is composed by some senior developers and one of Monero Core Team: fluffyponyza . They have built an api that is similar to bitpay api.
As payment gateways, Globee has : * Shopify payment gateway * OpenCart payment gateway * WooCommerce payment gateway * Magento payment gateway * PrestaShop payment gateway * XCart payment gateway
You can see other integrations here: https://globee.com/integrations Globee might be the perfect solution for big business, they have a great support and they could help you by supporting other cryptocurrencies like Bitcoin, Litecoin.
They might set a price, for a full list, please see: https://globee.com/pricing
3d option Your own payment gateway
If you have a custom platform for requesting payments to your customers, you could create your own payment gateway! (You could hire serhack for developing a payment gateway too).
Basically, a payment gateway is composed by two parts:
Payment box should have:
In order to check for a payment programmatically you can use the get_payments or get_bulk_payments JSON RPC API calls.
get_payments: this requires a payment_id parameter with a single payment ID.
get_bulk_payments: this is the preferred method, and requires two parameters, payment_ids - a JSON array of payment IDs - and an optional min_block_height - the block height to scan from.
If you have any doubts, questions, please let me know!
submitted by serhack to MoneroMerchants [link] [comments]

Where is a comprehensive developer documentation for BitcoinABC?

I'm switching development from BTC to BCH and using Bitcoin ABC. However, I haven't found much documentation for developers. What is the Bitcoin ABC equivalent of API reference (JSON-RPC) of Bitcoin Core?
submitted by sinoTrinity to btc [link] [comments]

RPC tests; what are they, why do we care, can you help?

Some of you may have seen me tweeting about the RPC tests earlier today (which ended with https://twitter.com/dogecoin_devs/status/957634677380132865 ). This post is a bit to talk about the development process, a bit to update everyone, and a bit to track status for the other developers.
One of the issues we had with early Dogecoin releases was how to efficiently test compatibility of new releases with software such as mining pools. The RPC ( https://en.bitcoin.it/wiki/API_reference_(JSON-RPC) ) interface is extensive and the commands interact with each other, making it time consuming to test effectively. Bitcoin Core solved this by introducing a set of tests which emulate services using the RPC interface.
These are important because Bitcoin isn't designed to support restructuring it, as we do (although more recent releases are vastly easier to update), so some of the changes we make can interact in unexpected ways with the base code. Issues such as the memory usage of 1.10 were indicated by the RPC tests, although at the time we missed the connection between the test problems and memory.
Max has updated the majority of the tests, reducing numbers of blocks mined to match Dogecoin maturity numbers, increasing transaction amounts to compensate for differences in fee schemes, etc. However, we have a small number of tests which fail due to unclear reasons, plus others which fail intermittently. My current concern is https://github.com/dogecoin/dogecoin/blob/1.14-dev/qa/rpc-tests/p2p-fullblocktest.py , which fails when testing that coinbase (mining reward) payments cannot be spent too early. I've checked and re-checked the numbers and the logs and it looks correct, and have had to take a break for now.
If you want to dig into these, the tests are run by:
  1. Build 1.14-dev (note it creates bitcoind because it's not rebranded yet)
  2. Run qa/pull-testerpc-tests.py p2p-fullblocktest to run just the full block tests, or qa/pull-testerpc-tests.py to run the full standard test suite (this will highlight other failing tests to tackle later).
  3. Wait for ages for the first run (it's a bit faster on later runs), like seriously think about getting some food while this works.
  4. It will fail and report the error.
When the test fails, it will leave behind the generated node configurations, logs and wallets (the path is displayed at the start of the tests running). You can also get more detail by running the tests with the option --tracerpc.
The other major failing test I'm struggling with is fundrawtransaction, which seems to be highlighting some sort of issue with watch only addresses. On line 617 ( https://github.com/dogecoin/dogecoin/blob/1.14-dev/qa/rpc-tests/fundrawtransaction.py#L617 ) it fails while trying to spend funds that node 3 should have access to because node 0 sent them to an address node 3 is watching, however for whatever reason node 3 seems unaware of those funds. Checking the generated wallet seems to suggest the address is watched correctly, but it doesn't realise the transaction is relevant.
We're working on these, but if anyone wants to dig in, please do go for it :)
submitted by rnicoll to dogecoindev [link] [comments]

QuarkChain Testnet 2.0 Mining.

QuarkChain Testnet 1.0 was built based on standardized blockchain system requirements, which included network, wallet, browser, and virtual machine functionalities. Other than the fact that the token was a test currency, the environment was completely compatible with the main network. By enhancing the communication efficiency and security of the network, Testnet 2.0 further improves the openness of the network. In addition, Testnet 2.0 will allow community members (other than citizens or residents of the United States) to contribute directly to the network, i.e. running a full node and mining, and receive testnet tokens as rewards.
QuarkChain Testnet 2.0 will support multiple mining algorithms, including two typical algorithms: Ethash and Double SHA256, as well as QuarkChain’s unique algorithm called Qkchash – a customized ASIC-resistant, CPU mining algorithm, exclusively developed by QuarkChain. Mining is available both on the root chain and on shards due to QuarkChain’s two-layered blockchain structure. Miners can flexibly choose to mine on the root chain with higher computing power requirements or on shards based on their own computing power levels. Our Goal By allowing community members to participate in mining on Testnet 2.0, our goal is to enhance QuarkChain’s community consensus, encourage community members to participate in testing and building the QuarkChain network, and gain first-hand experience of QuarkChain’s high flexibility and usability. During this time, we hope that the community can develop a better understanding about our mining algorithms, sharding technologies, and governance structures, etc. Furthermore, this will be a more thorough challenge to QuarkChain’s design before the launch of mainnet! Thus, we sincerely invite you to join the Testnet 2.0 mining event and build QuarkChain’s infrastructure together!
Today, we’re pleased to announce that we are officially providing the CPU mining demo to the public (other than citizens and residents of the United States)! Everyone can participate in our mining event, and earn tQKC, which can be exchanged to real rewards by non-U.S. persons after the launch of our mainnet. Also, we expect to upgrade our testnet over time, and expect to allow GPU mining for Ethash, and ASIC mining for Double SHA256 in the future. In addition, in the near future, a mining pool that is compatible with all mining algorithms of QuarkChain is also expected to be supported.
We hope all the community members can join in with us, and work together to complete this milestone! 2 Introduction to Mining Algorithms 2.1 What is mining? Mining is the process of generating the new blocks, in which the records of current transactions are added to the record of past transactions. Miners use software that contribute their mining power to participate in the maintenance of a blockchain. In return, they obtain a certain amount of QKC per block, which is called coinbase reward. Like many other blockchain technologies, QuarkChain adopts the most widely used Proof of Work (PoW) consensus algorithm to secure the network.
A cryptographically-secure PoW is a costly and time-consuming process which is difficult to solve due to computation-intensity or memory intensity but easy for others to verify. For a block to be valid it must satisfy certain requirements and hash to a value less than the current target threshold. Reverting a block requires recreating all successor blocks and redoing the work they contain, which is costly.
By running a cluster, everyone can become a miner and participate in the mining process. The mining rewards are proportional to the number of blocks mined by each individual.
2.2 Introduction to QuarkChain Algorithms and Mining setup According to QuarkChain’s two-layered blockchain structure and Boson consensus, different shards can apply different consensus and mining algorithms. As part of the Boson consensus, each shard can adjust the difficulty dynamically to increase or decrease the hash power of each shard chain.
In order to fully test QuarkChain testnet 2.0, we adopt three different types of mining algorithms” Ethash, Double SHA256, and Qkchash, which is ASIC resistant and exclusively developed by QuarkChain founder Qi Zhou. These first two hash algorithms correspond to the mining algorithms dominantly conducted on the graphics processing unit (GPU) and application-specific integrated circuits (ASIC), respectively.
I. Ethash Ethash is the PoW mining algorithm for Ethereum. It is the latest version of earlier Dagger-Hashimoto. Ethash is memory intensive, which makes it require large amounts of memory space in the process of mining. The efficiency of mining is basically independent of the CPU, but directly related to memory size and bandwidth. Therefore, by design, building Ethash ASIC is relatively difficult. Currently, the Ethash mining is dominantly conducted on the GPU machines. Read more about Ethash: https://github.com/ethereum/wiki/wiki/Ethash
II. Double SHA256 Double SHA256 is the PoW mining algorithms for Bitcoin. It is computational intensive hash algorithm, which uses two SHA256 iterations for the block header. If the hash result is less than the specific target, the mining is successful. ASIC machine has been developed by Bitmain to find more hashes with less electrical power usage. Read more about Double SHA256: https://en.bitcoin.it/wiki/Block_hashing_algorithm
III. Qkchash Originally, Bitcoin mining was conducted on the CPU of individual computers, with more cores and greater speed resulting in more profitability. After that, the mining process became dominated by GPU machines, then field-programmable gate arrays (FPGA) and finally ASIC, in a race to achieve more hash rates with less electrical power usage. Due to this arms race, it has become increasingly harder for prospective new miners to join. This raises centralization concerns because the manufacturers of the high-performance ASIC are concentrated in a small few.
To solve this, after extensive research and development, QuarkChain founder Dr. Qi Zhou has developed mining algorithm — Qkchash, that is expected to be ASIC-resistant. The idea is motivated by the famous date structure orders-statistic tree. Based on this data structure, Qkchash requires to perform multiple search, insert, and delete operations in the tree, which tries to break the ASIC pipeline and makes the code execution path to be data-dependent and unpredictable besides random memory-access patterns. Thus, the mining efficiency is closely related to the CPU, which ensures the security of Boston consensus and encourges the mining decentralization.
Please refer to Dr. Qi’s paper for more details: https://medium.com/quarkchain-official/order-statistics-based-hash-algorithm-e40f108563c4
2.3 Testnet 2.0 mining configuration Numbers of Shards: 8 Cluster: According to the real-time online mining node The corresponding mining algorithm is Read more about Ethash with Guardian: https://github.com/QuarkChain/pyquarkchain/wiki/Ethash-with-Guardian)
We will provide cluster software and the demo implementation of CPU mining to the public. Miners are able to arbitrarily select one shard or multiple shards to mine according to the mining difficulty and rewards of different shards. GPU / ASIC mining is allowed if the public manages to get it working with the current testnet. With the upgrade of our testnet, we will further provide the corresponding GPU / ASIC software.
QuarkChain’s two-layered blockchain structure, new P2P mode, and Boson consensus algorithm are expected tobe fully tested and verified in the QuarkChain testnet 2.0. 3 Mining Guidance In order to encourage all community members to participate in QuarkChain Testnet 2.0 mining event, we have prepared three mining guidances for community members of different backgrounds.
Today we are releasing the Docker Mining Tutorial first. This tutorial provides a command line configuration guide for developers and a docker image for multiple platforms, including a concise introduction of nodes and mining settings. Follow the instructions here: Quick Start with QuarkChain Mining.
Next we will continue to release: A tutorial for community members who don’t have programming background. In this tutorial, we will teach how to create private QuarkChain nodes using AWS, and how to mine QKC step by step. This tutorial is expected to be released in the next few days. Programs and APIs integrated with GPU / ASIC mining. This is expected to allow existing miners to switch to QKC mining more seamlessly. Frequently Asked Questions: 1. Can I use my laptop or personal computer to mine? Yes, we will provide cluster software and the demo implementation of CPU mining to the public. Miners will be able to arbitrarily select one shard or multiple shards to mine according to the work difficulty and rewards of different shards. 2. What is the minimum requirements for my laptop or personal computer to mine? Please prepare a Linux or MacOs machine with public IP address or port forwarding set up. 3. Can I mine with my GPU or an ASIC machine? For now, we will only be providing the demo implementation of CPU mining as our first step. Interested miners/developers can rewrite the corresponding GPU / ASIC mining program, according to the JSON RPC API we provided. With the upgrade of our testnet, we expect to provide the corresponding GPU / ASIC interface at a later date. 4. What is the difference among the different mining algorithms? Which one should I choose? Double SHA256 is a computational intensive algorithm, but Ethash and Qkchash are memory intensive algorithms, which have certain requirements on the computer’s memory. Since currently we only support CPU mining, the mining efficiency entirely depends on the cores and speed of CPU. 5. For testnet mining, what else should I know? First, the mining process will occupy a computer’s memory. Thus, it is recommended to use an idle computer for mining. In Testnet 2.0 settings, the target block time of root chain is 60 seconds, and the target block time of shard chain is 10 seconds. The mining is a completely random process, which will take some time and consume a certain amount of electricity. 6. What are the risks of testnet mining? Currently our testnet is still under the development stage and may not be 100% stable. Thus, there would be some risks for QuarkChain main chain forks in testnet, software upgrades and system reboots. These may cause your tQKC or block record to be lost despite our best efforts to ensure the stability and security of the testnet.
For more technical questions, welcome to join our developer community on Discard: https://discord.me/quarkchain. 4 Reward Mechanism Testnet 2.0 and all rewards described herein, including mining, are not being offered and will not be available to any citizens or residents of the United States and certain other jurisdictions. All rewards will only be payable following the mainnet launch of QuarkChain. In order to claim or receive any of the following rewards after mainnet launch, you will be required to provide certain identifying documentation and information about yourself. Failure to provide such information or demonstrate compliance with the restrictions herein may result in forfeiture of all rewards, prohibition from participating in future QuarkChain programs, and other sanctions.
4.1 Mining Rewards
  1. Prize Pool A total of 5 million QKC prize pool have been reserved to motivate all miners to participate in the testnet 2.0 mining event. According to the different mining algorithms, the prize pool is allocated as follows:
Total Prize Pool: 5,000,000 QKC Prize Pool for Ethash Algorithm: 2,000,000 QKC Prize Pool for Double SHA256 Algorithm: 1,000,000 QKC Prize Pool for Qkchash Algorithm: 2,000,000 QKC
The number of QKC each miner is eligible to receive upon mainnet launch will be calculated on a pro rata basis for each mining algorithm set forth above, based on the ratio of sharded block mined by each miner to the total number of sharded block mined by all miners employing such mining algorithm in Testnet 2.0.
  1. Early-bird Rewards To encourage more people to participate early, we will provide early bird rewards. Miners who participate in the first month (December 2018, PST) will enjoy double points. This additional point reward will be ended on December 31, 2018, 11:59pm (PST).
4.2 Bonus for Bug Submission: If you find any bugs for QuarkChain testnet, please feel free to create an issue on our Github page: https://github.com/QuarkChain/pyquarkchain/issues, or send us an email to [email protected]. We may provide related rewards based on the importance and difficulty of the bugs.
4.3 Reward Rules: QuarkChain reserves the right to review the qualifications of the participants in this event. If any cheating behaviors were to be found, the participant will be immediately disqualified from any rewards. QuarkChain further reserves the right to update the rules of the event, to stop the event/network, or to restart the event/network in its sole discretion, including the right to interpret any rules, terms or conditions. For the latest information, please visit our official website or follow us on Telegram/Twitter. About QuarkChain QuarkChain is a flexible, scalable, and user-oriented blockchain infrastructure by applying blockchain sharding technology. It is one of the first public chains that successfully implemented state sharding technology for blockchain in the world. QuarkChain aims to deliver 100,000+ on-chain TPS. Currently, 14,000+ peak TPS has already been achieved by an early stage testnet. QuarkChain already has over 50 partners in its ecosystem. With flexibility, scalability, and usability, QuarkChain is enabling EVERYONE to enjoy blockchain technology at ANYTIME and ANYWHERE.
Testnet 2.0 and all rewards described herein are not being and will not be offered in the United States or to any U.S. persons (as defined in Regulation S promulgated under the U.S. Securities Act of 1933, as amended) or any citizens or residents of countries subject to sanctions including the Balkans, Belarus, Burma, Cote D’Ivoire, Cuba, Democratic Republic of Congo, Iran, Iraq, Liberia, North Korea, Sudan, Syria, Zimbabwe, Central African Republic, Crimea, Lebanon, Libya, Somalia, South Suda, Venezuela and Yemen. QuarkChain reserves the right to terminate, suspend or prohibit participation of any user in Testnet 2.0 at any time.
In order to claim or receive any rewards, including mining rewards, you will be required to provide certain identifying documentation and information. Failure to provide such information or demonstrate compliance with the restrictions herein may result in termination of your participation, forfeiture of all rewards, prohibition from participating in future QuarkChain programs, and other actions.
This announcement is provided for informational purposes only and does not guarantee anyone a right to participate in or receive any rewards in connection with Testnet 2.0.
Note: The use of Testnet 2.0 is subject to our terms and conditions available at: https://quarkchain.io/testnet-2-0-terms-and-conditions/
more about qurakchain: Website: https://quarkchain.io/cn/ Facebook: https://www.facebook.com/quarkchainofficial/ Twitter: https://twitter.com/Quark_Chain Telegram: https://t.me/quarkchainio
submitted by Rahadsr to u/Rahadsr [link] [comments]

Echoes of the Past: Recovering Blockchain Metrics From Merged Mining

Cryptology ePrint Archive: Report 2018/1134
Date: 2018-11-22
Author(s): Nicholas Stifter, Philipp Schindler, Aljosha Judmayer, Alexei Zamyatin, Andreas Kern, Edgar Weippl

Link to Paper

So far, the topic of merged mining has mainly been considered in a security context, covering issues such as mining power centralization or crosschain attack scenarios. In this work we show that key information for determining blockchain metrics such as the fork rate can be recovered through data extracted from merge mined cryptocurrencies. Specifically, we reconstruct a long-ranging view of forks and stale blocks in Bitcoin from its merge mined child chains, and compare our results to previous findings that were derived from live measurements. Thereby, we show that live monitoring alone is not sufficient to capture a large majority of these events, as we are able to identify a non-negligible portion of stale blocks that were previously unaccounted for. Their authenticity is ensured by cryptographic evidence regarding both, their position in the respective blockchain, as well as the Proof-of-Work difficulty.
Furthermore, by applying this new technique to Litecoin and its child cryptocur rencies, we are able to provide the first extensive view and lower bound on the stale block and fork rate in the Litecoin network. Finally, we outline that a recovery of other important metrics and blockchain characteristics through merged mining may also be possible.

  1. C. Decker and R. Wattenhofer, “Information propagation in the bitcoin network,” in Peer-to-Peer Computing (P2P), 2013 IEEE Thirteenth International Conference on. IEEE, 2013, pp. 1–10. [Online]. Available: http://diyhpl.us/∼bryan/papers2/bitcoin/Information% 20propagation%20in%20the%20Bitcoin%20network.pdf
  2. A. Gervais, G. O. Karame, K. Wust, V. Glykantzis, H. Ritzdo rf, and S. Capkun, “On the ¨ security and performance of proof of work blockchains,” in Proceedings of the 2016 ACM SIGSAC. ACM, 2016, pp. 3–16.
  3. A. E. Gencer, S. Basu, I. Eyal, R. van Renesse, and E. G. Sirer, “Decentralization in bitcoin and ethereum networks,” in Proceedings of the 22nd International Conference on Financial Cryptography and Data Security (FC). Springer, 2018. [Online]. Available: http://fc18.ifca.ai/preproceedings/75.pdf
  4. I. Eyal and E. G. Sirer, “Majority is not enough: Bitcoin mining is vulnerable,” in Financial Cryptography and Data Security. Springer, 2014, pp. 436–454. [Online]. Available: http://arxiv.org/pdf/1311.0243
  5. K. Nayak, S. Kumar, A. Miller, and E. Shi, “Stubborn mining: Generalizing selfish mining and combining with an eclipse attack,” in 1st IEEE European Symposium on Security and Privacy, 2016. IEEE, 2016. [Online]. Available: http://eprint.iacr.org/2015/796.pdf
  6. A. Sapirshtein, Y. Sompolinsky, and A. Zohar, “Optimal selfish mining strategies in bitcoin,” http://arxiv.org/pdf/1507.06183.pdf, 2015, accessed: 2016-08-22. [Online]. Available: http://arxiv.org/pdf/1507.06183.pdf
  7. J. Bonneau, “Why buy when you can rent? bribery attacks on bitcoin consensus,” in BITCOIN ’16: Proceedings of the 3rd Workshop on Bitcoin and Blockchain Research, February 2016. [Online]. Available: http://fc16.ifca.ai/bitcoin/papers/Bon16b.pdf
  8. K. Liao and J. Katz, “Incentivizing blockchain forks via whale transactions,” in International Conference on Financial Cryptography and Data Security. Springer, 2017, pp. 264–279. [Online]. Available: http://www.cs.umd.edu/∼jkatz/papers/whale-txs.pdf
  9. P. McCorry, A. Hicks, and S. Meiklejohn, “Smart contracts for bribing miners,” in 5th Workshop on Bitcoin and Blockchain Research, Financial Cryptography and Data Security 18 (FC). Springer, 2018. [Online]. Available: http://fc18.ifca.ai/bitcoin/papers/bitcoin18-final14.pdf
  10. A. Zamyatin, N. Stifter, A. Judmayer, P. Schindler, E. Weippl, and W. J. Knottebelt, “(Short Paper) A Wild Velvet Fork Appears! Inclusive Blockchain Protocol Changes in Practice,” in 5th Workshop on Bitcoin and Blockchain Research, Financial Cryptography and Data Security 18 (FC). Springer, 2018. [Online]. Available: https://eprint.iacr.org/2018/087.pdf
  11. Blockchain.com, “Blockchain.com orphaned blocks,” https://www.blockchain.com/btc/orphaned-blocks, Blockchain.com, accessed: 2018-09-25.
  12. BitcoinChain.com, “Bitcoinchain bitcoin block explorer,” https://bitcoinchain.com/blockexplorer, BitcoinChain.com, accessed: 2018-09-25.
  13. ChainQuery.com, “A web based interface to the bitcoin api json-rpc,” http://chainquery.com/bitcoin-api, ChainQuery.com, accessed: 2018-09-25.
  14. L. Project, “Litecoin,” https://litecoin.org/, accessed: 2016-03-29.
  15. Y. Sompolinsky and A. Zohar, “Accelerating bitcoin’s transaction processing. fast money grows on trees, not chains,” p. 881, 2013. [Online]. Available: http://eprint.iacr.org/2013/881.pdf
  16. A. Miller and L. JJ, “Anonymous byzantine consensus from moderately-hard puzzles: A model for bitcoin,” https://socrates1024.s3.amazonaws.com/consensus.pdf, 2014, accessed: 2016-03-09. [Online]. Available: https://socrates1024.s3.amazonaws.com/consensus.pdf
  17. J. Garay, A. Kiayias, and N. Leonardos, “The bitcoin backbone protocol: Analysis and applications,” in Advances in Cryptology-EUROCRYPT 2015. Springer, 2015, pp. 281–310. [Online]. Available: http://courses.cs.washington.edu/courses/cse454/15wi/papers/bitcoin765.pdf
  18. R. Pass and E. Shi, “Fruitchains: A fair blockchain,” http://eprint.iacr.org/2016/916.pdf, 2016, accessed: 2016-11-08. [Online]. Available: http://eprint.iacr.org/2016/916.pdf
  19. R. Pass, L. Seeman, and a. shelat, “Analysis of the blockchain protocol in asynchronous networks,” http://eprint.iacr.org/2016/454.pdf, 2016, accessed: 2016-08-01. [Online]. Available: http://eprint.iacr.org/2016/454.pdf
  20. K. Croman, C. Decker, I. Eyal, A. E. Gencer, A. Juels, A. Kosba, A. Miller, P. Saxena, E. Shi, and E. Gun, “On scaling decentralized blockchains,” in ¨ 3rd Workshop on Bitcoin and Blockchain Research, Financial Cryptography 16, 2016. [Online]. Available: http://www.tik.ee.ethz.ch/file/74bc987e6ab4a8478c04950616612f69/main.pdf
  21. A. Kiayias and G. Panagiotakos, “On trees, chains and fast transactions in the blockchain.” http://eprint.iacr.org/2016/545.pdf, 2016, accessed: 2017-02-06. [Online]. Available: http://eprint.iacr.org/2016/545.pdf
  22. Y. Sompolinsky, Y. Lewenberg, and A. Zohar, “Spectre: A fast and scalable cryptocurrency protocol,” Cryptology ePrint Archive, Report 2016/1159, 2016, accessed: 2017-02-20. [Online]. Available: http://eprint.iacr.org/2016/1159.pdf
  23. Y. Sompolinsky and A. Zohar, “Phantom: A scalable blockdag protocol,” Cryptology ePrint Archive, Report 2018/104, 2018, accessed:2018-01-31. [Online]. Available: https://eprint.iacr.org/2018/104.pdf
  24. Bitcoin community, “Bitcoin-core source code,” https://github.com/bitcoin/bitcoin, accessed: 2018-09-25.
  25. A. Miller, J. Litton, A. Pachulski, N. Gupta, D. Levin, N. Spring, and B. Bhattacharjee, “Discovering bitcoin’s public topology and influential nodes,” http://cs.umd.edu/projects/coinscope/coinscope.pdf, May 2015, accsessed: 2016-03-09. [Online]. Available: http://cs.umd.edu/projects/coinscope/coinscope.pdf
  26. chainz.cryptoid.info/, “Chainz blockchain explorers,” chainz.cryptoid.info/, chainz.cryptoid.info/, accessed: 2018-09-25.
  27. Narayanan, Arvind and Bonneau, Joseph and Felten, Edward and Miller, Andrew and Goldfeder, Steven, “Bitcoin and cryptocurrency technologies,” http://bitcoinbook.cs.princeton.edu/, 2016, accessed: 2016-03-29. [Online]. Available: https://d28rh4a8wq0iu5.cloudfront.net/bitcointech/readings/princeton bitcoin book.pdf
  28. A. Judmayer, A. Zamyatin, N. Stifter, A. G. Voyiatzis, and E. Weippl, “Merged mining: Curse or cure?” in CBT’17: Proceedings of the International Workshop on Cryptocurrencies and Blockchain Technology, Sep 2017. [Online]. Available: https://eprint.iacr.org/2017/791.pdf
  29. M. Jakobsson and A. Juels, “Proofs of work and bread pudding protocols,” in Secure Information Networks. Springer, 1999, pp. 258–272. [Online]. Available: https://link.springer.com/content/pdf/10.1007/978-0-387-35568-9 18.pdf
  30. A. Judmayer, N. Stifter, K. Krombholz, and E. Weippl, “Blocks and chains: Introduction to bitcoin, cryptocurrencies, and their consensus mechanisms,” Synthesis Lectures on Information Security, Privacy, and Trust, 2017.
  31. A. Kiayias, A. Miller, and D. Zindros, “Non-interactive proofs of proof-of-work,” Cryptology ePrint Archive, Report 2017/963, 2017, accessed:2017-10-03. [Online]. Available: https://eprint.iacr.org/2017/963.pdf
  32. Namecoin community, “Namecoin source code - chainparams.cpp,” https://github.com/namecoin/namecoin-core/blob/fdfb20fc263a72acc2a3c460b56b64245c1bedcb/src/chainparams.cpp#L123, accessed: 2018-09-25.
  33. ——, “Namecoin source code - auxpow.cpp,” https://github.com/namecoin/namecoincore/blob/fdfb20fc263a72acc2a3c460b56b64245c1bedcb/src/auxpow.cpp#L177-L200, accessed: 2018-09-25.
  34. I0Coin community, “I0coin source code,” https://github.com/domob1812/i0coin, accessed: 2018-09-25.
  35. S. Nakamoto, “Bitcoin: A peer-to-peer electronic cash system,” https://bitcoin.org/bitcoin.pdf, Dec 2008, accessed: 2015-07-01. [Online]. Available: https://bitcoin.org/bitcoin.pdf
  36. N. T. Courtois and L. Bahack, “On subversive miner strategies and block withholding attack in bitcoin digital currency,” arXiv preprint arXiv:1402.1718, 2014, accessed: 2016-07-04. [Online]. Available: https://arxiv.org/pdf/1402.1718.pdf
  37. J. Gobel, P. Keeler, A. E. Krzesinski, and P. G. Taylor, “Bitcoin blockchain dynamics: the ¨ selfish-mine strategy in the presence of propagation delay,” http://arxiv.org/pdf/1505.05343.pdf, 2015, accessed: 2015-03-01. [Online]. Available: http://arxiv.org/pdf/1505.05343.pdf
  38. N. Developers, “Neo4j,” 2012.
  39. Gavin Andresen, “Bitcoin improvement proposal 34 (bip34): Block v2, height in coinbase,” https://github.com/bitcoin/bips/blob/mastebip-0034.mediawiki, accessed: 2018-09-25. [Online]. Available: https://github.com/bitcoin/bips/blob/mastebip-0034.mediawiki
  40. Matt Corello, “Fast internet bitcoin relay engine,” http://bitcoinfibre.org/, accessed: 2018-09-25. [Online]. Available: http://bitcoinfibre.org/
  41. Suhas Daftuar, “sendheaders message,” https://github.com/bitcoin/bips/wiki/Comments:BIP-0130, accessed: 2018-09-25. [Online]. Available: https://github.com/bitcoin/bips/wiki/Comments:BIP-0130
  42. R. Bowden, H. P. Keeler, A. E. Krzesinski, and P. G. Taylor, “Block arrivals in the bitcoin blockchain,” 2018. [Online]. Available: https://arxiv.org/pdf/1801.07447.pdf
  43. GeistGeld community, “Geistgeld source code,” https://github.com/Lolcust/GeistGeld, accessed: 2018-09-25.
  44. A. P. Ozisik, G. Bissias, and B. Levine, “Estimation of miner hash rates and consensus on blockchains,” arXiv preprint arXiv:1707.00082, 2017, accessed:2017-09-25. [Online]. Available: https://arxiv.org/pdf/1707.00082.pdf
  45. E. Duffield and D. Diaz, “Dash: A payments-focused cryptocurrency,” https://github.com/dashpay/dash/wiki/Whitepaper, Aug 2013, accessed: 2018-09-25. [Online]. Available: https://github.com/dashpay/dash/wiki/Whitepaper
  46. N. Van Saberhagen, “Cryptonote v 2.0,” https://cryptonote.org/whitepaper.pdf, Oct 2013. [Online]. Available: https://cryptonote.org/whitepaper.pdf
  47. G. Hall, “Guide: Merge mining 6 scrypt coins at full hashpower, simultaneously,” https://www.ccn.com/guide-simultaneously-mining-5-scrypt-coins-full-hashpowe, Apr 2014, accessed: 2018-09-25. [Online]. Available: https://www.ccn.com/guide-simultaneouslymining-5-scrypt-coins-full-hashpowe
  48. united-scrypt coin, “[ann][usc] first merged minable scryptcoin unitedscryptcoin,” https://bitcointalk.org/index.php?topic=353688.0, Nov 2013, accessed: 2018-09-25. [Online]. Available: https://bitcointalk.org/index.php?topic=353688.0
  49. J. A. D. Donet, C. Perez-Sola, and J. Herrera-Joancomart ´ ´ı, “The bitcoin p2p network,” in Financial Cryptography and Data Security. Springer, 2014, pp. 87–102. [Online]. Available: http://fc14.ifca.ai/bitcoin/papers/bitcoin14 submission 3.pdf
  50. M. Bartoletti and L. Pompianu, “An analysis of bitcoin op return metadata,” https://arxiv.org/pdf/1702.01024.pdf, 2017, accessed: 2017-03-09. [Online]. Available: https://arxiv.org/pdf/1702.01024.pdf
  51. R. Matzutt, J. Hiller, M. Henze, J. H. Ziegeldorf, D. Mullmann, O. Hohlfeld, and K. Wehrle, ¨ “A quantitative analysis of the impact of arbitrary blockchain content on bitcoin,” in Proceedings of the 22nd International Conference on Financial Cryptography and Data Security (FC). Springer, 2018. [Online]. Available: http://fc18.ifca.ai/preproceedings/6.pdf
  52. M. Grundmann, T. Neudecker, and H. Hartenstein, “Exploiting transaction accumulation and double spends for topology inference in bitcoin,” in 5th Workshop on Bitcoin and Blockchain Research, Financial Cryptography and Data Security 18 (FC). Springer, 2018. [Online]. Available: http://fc18.ifca.ai/bitcoin/papers/bitcoin18-final10.pdf
  53. A. Judmayer, N. Stifter, P. Schindler, and E. Weippl, “Pitchforks in cryptocurrencies: Enforcing rule changes through offensive forking- and consensus techniques (short paper),” in CBT’18: Proceedings of the International Workshop on Cryptocurrencies and Blockchain Technology, Sep 2018. [Online]. Available: https://www.sba-research.org/wpcontent/uploads/2018/09/judmayer2018pitchfork 2018-09-05.pdf
submitted by dj-gutz to myrXiv [link] [comments]

Transcript from Ravencoin Open Developer Meeting - Nov. 16, 2018

Tron at 2:03 PM

Topics: Messaging (next phase) UI 2.2 - Build from develop - still working out a few kinks Mobile - Send/Rcv/View Assets - In progress Raven Dev Kit -Status

RavencoinDev at 2:04 PM

Hey Everybody! Let's get started!Thanks Tron for posting the topics.Tron is going talk about Messaging Plans.Let's start there.

Chatturga at 2:06 PM

It looks like this channel is not connected to the IRC. One moment

RavencoinDev at 2:07 PM

Well, we going to move forward as the tech guys fix the IRC connections.

Tron at 2:07 PM

I wanted to have a doc describing the messaging, but it isn't quite ready.I understand this isn't going to IRC yet, but I'm starting anyway.

RavencoinDev at 2:08 PM

Look for it soon on a Medium near you.

Tron at 2:08 PM

Summary version: Every transaction can have an IPFS hash attached.

Vincent at 2:09 PM

any plans for a 'create IPFS' button?

RavencoinDev at 2:09 PM


Vincent at 2:09 PM

on asset creatin window also?

RavencoinDev at 2:09 PM


Vincent at 2:09 PM


Tron at 2:09 PM

IPFS attachments for transactions that send ownership token or channel token back to the same address will be considered broadcast messages for that token.The client will show the message.Some anti-spam measures will be introduced.If a token is in a new address, then messages will be on by default.The second token in an address, the channel will be available, but muted by default.

RavencoinDev at 2:11 PM

That way I can't spam out 21b tokens and then start sending messages to everybody.

Tron at 2:11 PM

We'd like to have messaging in a reference client on all six platforms.

corby at 2:11 PM


Tron at 2:11 PM

Photos will not be shown. Messages will be "linkified"

RavencoinDev at 2:12 PM

and plain text.We'll start with the QT wallet support

Tron at 2:12 PM

Any other client is free to show any IPFS message they choose.The messaging is fully transparent.

Rikki RATTOE at 2:13 PM

ok, so messaging isn't private

Tron at 2:13 PM

Anyone could read the chain and see the messages.

RavencoinDev at 2:13 PM

No, never was planned to be private

MSFTserver-mine more @ MinerMore at 2:13 PM

irc link should be fixed

Tron at 2:13 PM

It is possible to put encrypted content in the IPFS, but then you'd have to distribute the key somehow.

RavencoinDev at 2:13 PM

Thanks MSFT!

Chatturga at 2:13 PM


Tron at 2:14 PM

Core protocol changes Extend the OP_RVN_ASSET to include for any transfer: RVNT <0xHH><0x12><0x20><32 bytes encoding 256 bit IPFS hash> 0xHH - File type 0x00 - NO data, 0x01 - IPFS hash, 0x02 through 0xFF RESERVED 0x12 - IPFS Spec - Using SHA256 hash 0x20 - IPFS Spec - 0x20 in hex specifying a 32 byte hash. …. (32 byte hash in binary)

corby at 2:14 PM

By it's nature nothing on chain is private per se. Just like with wallets you'd need to use crypto to secure messaging between parties.

Tron at 2:14 PM

Advantages: This messaging protocol has the advantage of not filling up the blockchain. The message information is public so IPFS works as a great distributed store. If the messages are important enough, then the message sender can run nodes that "PIN" the message to keep a more durable version. The message system cannot be spoofed because any change in the message will result in a different hash, and therefore the message location will be different. Only the unique token holder can sign the transaction that adds the message. This prevents spam. Message clients (wallets), can opt-in or opt-out of messages by channel. Meta-message websites can allow viewing of all messages, or all messages for a token. A simple single channel system is supported by the protocol, but a channel could be sub-divided by a client to have as many sub-channels as desired. There are no limits on the number of channels per token, but each channel requires the 5 RVN fee to create the channel.

RavencoinDev at 2:14 PM

So, somebody could create their own client and encrypt the data on the blockchain if they wished.

corby at 2:15 PM

Wow Tron types fast

Rikki RATTOE at 2:15 PM

yeah there was some confusion in the community whether messaging would be private and off chain

Tron at 2:15 PM

Anti-Spam Strategy One difficulty we have is that tokens can be sent to any Ravencoin asset holder unsolicited. This happens on other asset platforms like Counterparty. In many cases, this is good, and is a way for asset issuers to get their token known. It is essentially an airdrop. However, combined with the messaging capabilities of Ravencoin, this can, and likely will become a spam strategy. Someone who wants to send messages (probably scams) to Ravencoin asset holders, which they know are crypto-savvy people, will create a token with billions of units, send it to every address, and then message with the talking stick for that token. Unless we preemptively address this problem, Ravencoin messaging will become a useless spam channel. Anyone can stop the messages for an asset by burning the asset, or by turning off the channel. A simple solution is to automatically mute the channel (by default) for the 2nd asset sent to an address. The reason this works is because the assets that you acquire through your actions will be to a newly generated address. The normal workflow would be to purchase an asset on an exchange, or through a ICO/STO sale. For an exchange, you'll provide a withdrawal address, and best practice says you request a new address from the client with File->'Receiving addresses…'->New. To provide an address to the ICO/STO issuer, you would do the same. It is only the case where someone is sending assets unsolicited to you where an address would be re-used for asset tokens. This is not 100% the case, and there may be rare edge-cases, but would allow us to set the channels to listen or silent by default. Assets sent to addresses that were already 'on-chain' can be quarantined. The user can burn them or take them out of quarantine.

RavencoinDev at 2:18 PM

Okay, let me know when/if you guys read through all that. 📷📷2

corby at 2:18 PM

To be clear this is a client-side issue -- anyone will be able to send anything (including messages) to any address on chain..

RavencoinDev at 2:18 PM

It'll be in the Medium post later.

Tron at 2:19 PM

@corby The reference client will only show messages signed by the issuer or designated channels.Who is ready for another wall of text? 📷

corby at 2:19 PM

I hear that's the plan 📷 just pointing out that it is on the client in these cases..

Tron at 2:20 PM

Yes, any client can show anything gleaned from the chain.Goal: A simple message format without photos. URL links are allowed and most clients will automatically "linkify" the message for valid URLs. For display, message file must be a valid json file. { "subject":"This is the optional subject", "message": "This is required.", "expires": 1578034800 } Only "message" is required {"message":"Hello world"}

bhorn at 2:21 PM


Vincent at 2:21 PM

discount coupon?

Tron at 2:21 PM

If you have a message that worthless (say after a vote), just don't show the message.

bhorn at 2:21 PM

i see - more client side operation

corby at 2:21 PM


Tron at 2:22 PM

Yep. And the expiration could be used by IPFS pinners to stop worrying about the message. Optional

RavencoinDev at 2:22 PM

If the client sees a message that is expired it just won't display it.

Vincent at 2:23 PM

will that me messaged otherwise may cause confusion?"expired'

RavencoinDev at 2:23 PM

YesWe'll do our best to make it intuitive.

Tron at 2:24 PM

Client handling of messages Pop-up messages or notifications when running live. Show messages for any assets sent to a new address - by default Mute messages for assets sent to an address that was already on-network. Have a setting to not show messages older than X IPFSHash (or 8 bytes of it) =

Rikki RATTOE at 2:25 PM

will there be a file size limit for IPFS creation in the wallet?

RavencoinDev at 2:25 PM

We'll also provide updated documentation.

Tron at 2:26 PM

Excellent question Rikki. Here are some guidelinesGuidelines: Clients are free to show or not show poorly formed messages. Reference clients will limit message display to properly formed messages. If subject is missing, the first line of the message will be used (up to 80 chars). Standard JSON encoding for newlines, tabs, etc. https://www.freeformatter.com/json-escape.html Expiration is optional, but desired. Will stop showing the message after X date, where X is specified as Unix Epoch. Good for invites, voting requests, and other time sensitive messages that have no value after a specific date. By default clients will not show a message after X blocks (default 1 year) Amount of subject shown will be client dependent - Reference client may cut off at 80 chars. Messages longer than 15,000 (about 8 pages) will not be pinned to IPFS by some scanners. Messages longer than 15,000 characters may be rejected altogether by the client. Images will not be shown in reference clients. Other clients may show any IPFS content at their discretion. IPFSHash is only a "published" message if the Admin/Owner or Channel token is sent from/to the same address. This allows for standard transfers with metadata that don't "publish".Free Online JSON Escape / Unescape Tool - FreeFormatter.comA free online tool to escape or unescape JSON strings

RavencoinDev at 2:26 PM

We're hoping to add preferences that will allow the user to customize their messaging experience.

Tron at 2:27 PM

Also, happy to receive feedback from everyone.

corby at 2:27 PM

In theory though if you maintain your own IPFS nodes you should be able to reference files of whatever size right?

Steelers at 2:27 PM

How about a simple Stop light approach - Green (ball) New Message, Yellow (Ball) Expiring Messages, Red (Ball) Expired Messages

RavencoinDev at 2:27 PM

Yes please! That's the point of sharing it here

Chatturga at 2:27 PM


push | ravenland.org at 2:28 PM

Thanks @Tron can you provide any details of the coming 'tooling' at the end of november, and what that might enable (apologies as I am a bit late to meeting if this has been asked already)

VeronicaBOT at 2:28 PM

sup guys

Tron at 2:28 PM

Sure, that's coming.

RavencoinDev at 2:28 PM

That's the Raven WebDev Kit topic coming up in a few mins.

push | ravenland.org at 2:29 PM

oki 📷 cheers

RavencoinDev at 2:29 PM

Questions on messaging?

Jeroz at 2:30 PM

Not sure if I missed it, but how fast could you send multiple messages in succession?

BruceFenton at 2:30 PM

Some kind of sweep feature or block feature for both tokens and messages could be useful Certain messages will be illegal to possess in certain jurisdictions If someone sends a picture of Tiennneman tank man in China or a message calling for the overthrow of a ruler it could be illegal for someone to have There’s no way for that jurisdiction to censor the chain So some users might want the option to purge messages or not receive them client side / on the wallet

Tron at 2:30 PM

Messages are a transaction.

RavencoinDev at 2:30 PM

So it'll cost you to spam messages.They can only send a hash to that picture and the client won't display anything not JSON

corby at 2:31 PM

purge/block is the age old email spam

Tron at 2:31 PM

The Reference client - other clients / web sites, etc can show anything they wish.

RavencoinDev at 2:31 PM

You can also burn a token if you never want to receive messages from that token owner.

UserJonPizza|MinePool.com|Mom at 2:32 PM

Can't they just resend the token?

Tron at 2:33 PM

Yes, but it would default to mute.📷2

RavencoinDev at 2:33 PM

meaning it would show up in a spam foldetab

bhorn at 2:33 PM

is muting available for the initial asset as well?

RavencoinDev at 2:33 PM

Something easy to ignore if muted.

Tron at 2:33 PM

@bhorn Yes

BruceFenton at 2:33 PM

Can users nite some assets and not others?

Tron at 2:33 PM

@bhorn It just isn't the default.

BruceFenton at 2:33 PM


RavencoinDev at 2:33 PM

YesYou can mute per token.

BruceFenton at 2:34 PM


Tron at 2:34 PM

And per token per channel.

Jeroz at 2:34 PM

channels are the subtokens?

BruceFenton at 2:34 PM

What’s per token per channel mean ?

Tron at 2:34 PM

The issuer sends to the "Primary" channel.Token owner can create channels like "Alert", "Emergency", etc.These "talking sticks" are similar to unique assets.📷1ASSET~Channel

RavencoinDev at 2:37 PM

Okay, we have a few more topics to cover today.Tron will post more details on Medium and we can continue discussions there.

Jeroz at 2:38 PM

Ah, I missed channel creation bit for each token with the 5 RVN / channel cost. It makes more sense to me now.

RavencoinDev at 2:38 PM

The developers are working towards posting a new version 2.2 that has the updated UI shown on twitter.

Vincent at 2:39 PM

twit link?

RavencoinDev at 2:39 PM

The consuming of large birds (not ravens) might slow the release a bit.So likely the week after Thanksgiving.

[Dev] Blondfrogs at 2:39 PM

The new UI will contain: - New menu layout - New icons - Dark mode - Added RVN colors

Dan1666 at 2:39 PM

+1 Dark mode

RavencoinDev at 2:39 PM


Dan1666 at 2:40 PM

so pleased about that

RavencoinDev at 2:40 PM

I can honestly say it'll be the nicest crypto wallet out there.

[Dev] Blondfrogs at 2:40 PM

A little sneak peak, but this is not the final project📷📷6📷3

!S1LVA | MINEPOOL at 2:40 PM


Dan1666 at 2:41 PM

reminds me of Sub7 ui for those that might remember

UserJonPizza|MinePool.com|Mom at 2:41 PM

Can we have an asset count at the top?

[Dev] Blondfrogs at 2:41 PM

Icons will be changing

Vincent at 2:41 PM

does the 'transfer assets' have a this for that component?

Tron at 2:41 PM

Build from develop to see the sneak preview in action.There may be small glitches depending on OS. These are being worked on.

Rikki RATTOE at 2:41 PM

No plans for the mobile wallet to show an IPFS image I'm assuming? Would be a nice feature if say a retail store could send a QR coupon code to their token holders and they could scan the coupon using their wallet in store

[Dev] Blondfrogs at 2:42 PM

@Vincent That will probably be a different section added later📷1

RavencoinDev at 2:42 PM

Yes, Rikki we do want to support messaging.Looking into how that would work with Apple and Google push.

push | ravenland.org at 2:42 PM

sub7📷1hahaoldschoolit so is similar aswell

[Master] Roshii at 2:43 PM

Messages are transactions no need for any push

Tron at 2:43 PM

@Rikki RATTOE There's a danger in showing graphics where anyone can post anything without accountability for their actions. A client that only shows tokens for a specific asset could do this📷1

RavencoinDev at 2:43 PM

True, unless you want to see the messages even if you haven't opened your wallet in a week.

Rikki RATTOE at 2:44 PM

the only thing I was thinking was if you simply linked the image, somebody could just copy the link and text it off to everyone and the coupon isn't all that exclusive

UserJonPizza|MinePool.com|Mom at 2:44 PM

Maybe a mobile link-up for a easy way to see messages by just importing pubkey(edited)

RavencoinDev at 2:45 PM

Speaking of mobileWe are also getting close to a release of mobile that includes the ability to show assets held, and transfer them.Roshii has been hard at work.📷6📷1

Vincent at 2:46 PM

can be hidden also?

RavencoinDev at 2:47 PM

We're still finalizing the UI design but that is on the list of todos📷1

Under at 2:47 PM

Could we do zerofee mempool messaging that basically gets destroyed after it expires out of the mempool for real-time stealth mode messaging

corby at 2:48 PM

That's interesting!

RavencoinDev at 2:49 PM

There are other solutions available for stealth messaging, that's not what the devs had intended to build. It does sound cool though @Under

Under at 2:50 PM

📷 we’ll keep up the good work. Looking forward to the db upgrades. Will test this weekend

RavencoinDev at 2:50 PM

Thanks!That leaves us with 10 minutes for the Dev Kit!Corby has been working on expanding some of the awesome work that @Under has been doing.

corby at 2:52 PM

Yes -- all of the -addressindex rpc calls are being updated to work with assets

RavencoinDev at 2:52 PM

Hopefully we'll be able to post the source soon once the initial use cases are all working.

corby at 2:52 PM

so assets are being tied into transaction history, utxos, etc

RavencoinDev at 2:52 PM

The devs want to provide a set of API's that make it easy for web developers to build solutions on top of Ravencoin.VinX is investigating the possibility of using Ravencoin to power their solution.

corby at 2:53 PM

will be exposed via insight-api which we've forked from @Under

[Master] Roshii at 2:53 PM

Something worth bringing up is that you will be able to get specific asset daba from full nodes with specific message protocols.

corby at 2:54 PM

also working on js lib for client side construction of asset transactions

Tron at 2:55 PM

Dev Kit will be an ongoing project so others can contribute and extend the APIs and capabilities of the 2nd layer.📷3📷3

RavencoinDev at 2:55 PM

Will be posted soon to the RavenProject GitHub.

corby at 2:55 PM

separate thing but yes Roshii that is worth mentioning -- network layer for getting asset data

RavencoinDev at 2:55 PM

Again want to give thanks to @Under for getting a great start on the project

push | ravenland.org at 2:56 PM

Yes looking forward to seeing more on the extensive api and capabilities, is there a wiki on this anywhere tron?(as to prevent other people replicating eachothers work?)

RavencoinDev at 2:56 PM

The wiki will be in the project on GitHub

push | ravenland.org at 2:56 PM

im guessing when the kit is released, something will appear, okok cool

RavencoinDevat 2:57 PM

Any questions about the Web DevKit?

push | ravenland.orgToday at 2:57 PM

well, what kind of support will it give us, that would be nice, is this written anywhereI'm still relatively new to blockchain<2 yearsso need some hand holding i suppose 📷

bhorn at 2:58 PM

right, what are initial use cases of the devkit?

push | ravenland.org at 2:58 PM

i mean im guessing metamask like capabilitysome kind of smart contract, some automation capabilitiesrpc scriptsstuff like thiseven if proof of concept or examplei guess im wondering if my hopes are realistic 📷

RavencoinDev at 2:59 PM

You can see the awesome work that @Under has already don that we are building on top of.

push | ravenland.org at 2:59 PM

yes @Under is truly a herooki, cool

RavencoinDev at 2:59 PM

https://ravencoin.network/Ravencoin Block ExplorerRavencoin Insight. View detailed information on all ravencoin transactions and blocks.

push | ravenland.org at 2:59 PM

ok, sweet, that is very encouragingthanks @Under for making that code public

corby at 3:00 PM

It will hopefully allow you to write all sorts of clients -- depending on complexity of use case you might just have js lib (wallet functions, ability to post txs to gateway) or a server side project (asset explorer or exchange)..(edited)

Tron at 3:00 PM

Yeah, thanks @Under .

RavencoinDev at 3:00 PM

What's your GitHub URL @Under ?

push | ravenland.org at 3:00 PM

https://github.com/underdarkskies/ i believeGitHub· GitHubunderdarkskies has 31 repositories available. Follow their code on GitHub.📷

RavencoinDev at 3:00 PM


push | ravenland.org at 3:00 PM

he is truly a hero(edited)

RavencoinDev at 3:00 PM


push | ravenland.org at 3:00 PM

damn o'sgo missing everywhere

RavencoinDev at 3:01 PM

teh o's are hard... Just ask @Chatturga

push | ravenland.org at 3:01 PM


Chatturga at 3:01 PM

O's arent the problem...

push | ravenland.org at 3:01 PM


RavencoinDev at 3:02 PM

Alright we're at time and the devs are super busy. Thanks everybody for joining us.

push | ravenland.org at 3:02 PM

thanks guys

RavencoinDev at 3:02 PM

Thank you all for supporting the Raven community.📷6

corby at 3:02 PM

thanks all!

push | ravenland.org at 3:02 PM

keep up the awesome work, whilst bitcoin sv and bitcoin abc fight, another bitcoin fork raven, raven thru the night📷5

Vincent at 3:02 PM


RavencoinDev at 3:03 PM

We're amazingly blessed to have you on this ride with us.📷5📷9📷5

Dan1666 at 3:03 PM


BruceFenton at 3:03 PM


UserJonPizza|MinePool.com|Mom at 3:55 PM

Good meeting! Excited for the new QT!!
submitted by Chatturga to u/Chatturga [link] [comments]

Samourai Wallet needs access to your node's JSON-RPC port if you're using a Trusted Node... why?

I understand that it's not necessary to use the Trusted Node function to use Samourai. That's not my concern. My concern is specifically that Samourai needs full control of your Bitcoin node via the JSON-RPC port, if you are to use your own node for broadcasting transactions. This is totally separate and completely different than the normal Bitcoin port. I find this disconcerting for the following facts:
So in summary, you need to break your node's security assumptions to make this feature work.
I discussed this a week and a half ago with the SamouraiWallet Reddit user, who offered the explanation that by authenticating to the JSON-RPC port, you were "guaranteed" that you were connecting to your own node.. This is not true. A malicious node can simply accept any credentials presented to it and spy on or drop transactions sent to it. If your traffic is subject to getting routed without your knowledge, you should use a VPN and put your node on the same network. Even if you do use a VPN, this configuration still does not require control of the node to rebroadcast transactions.
So, again and publicly, I'd like to ask the developers of Samourai Wallet: Why does your app require control of my node in order to use Trusted Node? As the wallet seemingly portraying itself as the most paranoid and privacy conscious, why are you asking your most privacy-conscious and paranoid users to relinquish control of their nodes (and their node's wallets) to you? I am failing to come up with a valid reason, and the reason offered crumples quickly under scrutiny.
submitted by tyzbit to Bitcoin [link] [comments]

A simple guide to financial sovereignty (set up your Bitcoin fullnode)

In 2009, a 9 pages white paper by satoshi Nakamoto described a protocol that made central banking obselete. It's a new paradigm where monney is no longer controlled by a few, but by the whole network.
The shift is already happening, as we speak, even if it's hard to see, especially if you lack the fundamental knowledege of cryptoghraphy, game theory and economics. It's just a matter of time before you realize that Bitcoin is hard money, and for the first time we have a framework to apply austrian economics, without permission. Time to reset the keynesian monopoly game.
I don't think people are inherently bad, it's just that in the actual system (which I call the legacy system) people are incentivised to make decisions that are good from their individual perspective, but unfortunately, the sum of those individual decisions are bad from the collective group perspective. That's just plain simple game theory. What makes Bitcoin so special is it's perfectly aligned set of incentives that makes individuals and collectives outcomes better. It switches the economic model from keynesian to austrian, inflation to deflation, spending to saving, modern slavery (throught debt) to financial sovereingty, de-evolution to evolution. We are currently shifting from fiat to Bitcoin.
What you think capitalism is has nothing to do with what Capitalism really is in a free market. Capitalism is beautiful, it's simply the act of evolution, saving and optimising for consumming only what's needed (don't forget with live in a world with limited ressources, yes we all forgot). Stop spending and start capitalising, that's what we should be doing. But it's near impossible in a world run by socialists imposing debt using violence. What do you think back the US dollar ? gold ? no no, only tanks, aircraft carriers, soldiers and corrupt politicians.
Our only way out of this madness with the minimum violence is Bitcoin.
To be clear, if you dont run a fullnode, then you don't validate the transactions yourself (which is one purpose of running a fullnode). If you don't do the job yourself, then you have no other choice then to trust someone else for it. That's not necesserely a bad thing, as long as you are aware of it. You have no say in what defines Bitcoin, you enforce no rules. You serve no purpose in the Bitcoin realm. Why not !
Now if you seek financial sovereignty and want to take part in the new money paradigm, you will need to operate a fullnode and get your hands a little dirty. This guide hopefuly will take you there while walking you through the steps of setting up your autonomous Bitcoin Core full node.
Why Bitcoin Core ? simply because the Bitcoin core client implement and enforce the set of rules that I myself define as being Bitcoin.



Choose & download the latest binaries for your platform directly from github: https://bitcoincore.org/bin/bitcoin-core-0.16.2
at the time of writing, the latest bitcoin core version is 0.16.2
wget https://bitcoincore.org/bin/bitcoin-core-0.16.2/bitcoin-0.16.2-x86_64-linux-gnu.tar.gz tar -zxvf bitcoin-0.16.2-x86_64-linux-gnu.tar.gz sudo mv bitcoin-0.16.2/bin/* /uslocal/bin/ rm -rf bitcoin-0.16.2-x86_64-linux-gnu.tar.gz bitcoin-0.16.2 # clean 


Make sure the needed ports (8333, 8332) are open on your server. If you don't know, you can & should use a firewall on your server. I use ufw, which stands for uncomplicated firewall.
sudo apt install ufw # install ufw 
configure default rules & enable firewall
sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow ssh # if you operate your server via ssh dont forget to allow ssh before enabling sudo ufw enable 
Once your firewall is ready, open the bitcoin ports :
sudo ufw allow 8333 # mainnet sudo ufw allow 8332 # mainnet rpc/http sudo ufw allow 7000 # netcat transfert (for trusted sync) 
check your firewall rules with sudo ufw status numbered


Start bitcoind so that it create the initial ~/.bitcoin folder structure.
bitcoind& # launch daemon (the & run the copmmand in the background) bitcoin-cli stop # stop the daemon once folder structure is created 


In my case, for a personnal fullnode, I want to run a full txindexed chain. We only live once and i want all options to be possible/available :) If you plan to interact with the lightning network in the future and want to stay 100% trustless, I encourage you txindexing the chain (because you'll need an indexed chain). it's not hard to txindex the chain later on, but the less you touch the data, the better. so always better to start with txindex=1 if you want to go for the long run. It only adds 26Go on top of the 200Go non indexed chain. So it's worth it !
Just to get an idea of the size of the bitcoin core chain (August 23, 2018) :
network folder txindexed height size
mainnet blocks + chainstate yes 538.094 209Go + 2.7Go = 221.7
mainnet blocks + chainstate no 538.094 193Go + 2.7Go = 195.7Go
testnet blocks + chainstate yes - -
testnet blocks + chainstate no 1.407.580 20Go + 982Mo = 21Go
Create a bitcoin.conf config file in the ~/.bitcoin folder. This is my default settings, feel free to adjust to your need. [ see full config Running Bitcoin - Bitcoin Wiki ]
# see full config here https://en.bitcoin.it/wiki/Running_Bitcoin # Global daemon=1 txindex=1 rpcallowip= # bind network interface to local only for now server=1 rest=1 # RPC rpcport=8332 rpcuser=admin rpcpassword=password # define a password rpcworkqueue=100 # zmq zmqpubrawblock=tcp://*:8331 zmqpubrawtx=tcp://*:8331 #zmqpubhashblock=tcp://*:8331 #zmqpubhashtx=tcp://*:8331 # numbers of peers. default to 125 maxconnections=10 # utxo cache. default to 300M dbcache=100 # Spam protection limitfreerelay=10 minrelaytxfee=0.0001 

Sync the blockchain

There are 2 ways you can donwload/sync the bitcoin blochain :

Network sync (default)

If this is the first time you are setting up a bitcoin full node, it's the only way to trust the data. It will take time, depending on your hardware and network speed, it could vary from hours to days. You have nothing to do but leave the bitcoind daemon running. check status with bitcoin-cli getblockchaininfo, kill daemon with bitcoin-cli stop.
Remember that this is the only procedure you should use in order to sync the blockchain for the first time, as you don't want to trust anyone with that data except the network itself.

Trusted sync

Skip this chapter if this is the first you're setting up a full node.
Once you operate a fully "network trusted" node, if you'd like to operate other nodes, syncing them from your trusted node(s) will go much faster, since you simply have to copy the trusted data from server to server directly, instead of going throught the bitcoin core network sync.
You will need to transfer the chainstate & blocks directory from the ~/.bitcoin folder of one of your trusted node to the new one. The way you achieve that transfer is up to you.
At the time of writing (August 23, 2018), the txindexed blockchain (chainstate + blocks up to height 538.094) is around 220Go. Moving that quantity of data over the network is not a trivial task, but if the transfer happens between 2 reliable servers, then netcat will be great for the job. (netcat sends raw tcp packets, there is no authentification or resume feature).
Note: with netcat, if one of the servers connection is not stable, and you lose connection, you will have to start again. that's a bummer. in that case you are better of with tools like rsync or rcp that let you resume a transfer.
In order to make the transfer a simple task, make sure you do the following on both of the receiver and the sender server :
Once both your servers (receiver & sender) are netcat ready, proceed as follow :
This is the transfer times for my last data sync between 2 servers hosted at time4vps.eu (not too bad) | folder | size | transfer time | - | - | - | blocks | 209Go | 5h20 | chainstate | 2.7Go | 4min

bitcoind as a service

For ease of use and 100% uptime, simply add bitcoind to your system service manager (in my case systemd) create the file /etc/systemd/system/bitcoind.service and add the following to it :
[Unit] Description=Bitcoin daemon After=network.target [Service] User=larafale RuntimeDirectory=bitcoind Type=forking ExecStart=/uslocal/bin/bitcoind -conf=/home/larafale/.bitcoin/bitcoin.conf ExecStop=/uslocal/bin/bitcoin-cli stop KillMode=process Restart=always RestartSec=120 TimeoutSec=240 # Hardening measures #################### # Provide a private /tmp and /vatmp. PrivateTmp=true # Mount /usr, /boot/ and /etc read-only for the process. ProtectSystem=full # Disallow the process and all of its children to gain # new privileges through execve(). NoNewPrivileges=true # Use a new /dev namespace only populated with API pseudo devices # such as /dev/null, /dev/zero and /dev/random. PrivateDevices=true # Deny the creation of writable and executable memory mappings. MemoryDenyWriteExecute=true [Install] WantedBy=multi-user.target 
Don't forget to correct the user name & the bitcoin.conf path. Once the systemd bitcoind config file is created, reload system services and start the bitcoind service:
sudo systemctl daemon-reload # reload new services sudo systemctl enable bitcoind # enable bitcoind sudo systemctl start bitcoind # start bitcoind sudo systemctl status bitcoind # check bitcoind status 
If everything worked, status should output the following:
● bitcoind.service - Bitcoin daemon Loaded: loaded (/etc/systemd/system/bitcoind.service; enabled; vendor preset: enabled) Active: active (running) since jeu. 2018-08-23 21:17:41 CEST; 5s ago Process: 5218 ExecStart=/uslocal/bin/bitcoind -conf=/home/larafale/.bitcoin/bitcoin.conf (code=exited, status=0/SUCCESS) Main PID: 5219 (bitcoind) CGroup: /system.slice/bitcoind.service └─5219 /uslocal/bin/bitcoind -conf=/home/larafale/.bitcoin/bitcoin.conf 
The bitcoind service is active and will automatically restart on statup/crash. Wait a couple minutes until the bitcoin-cli getblockchaininfo command returns the chain status. You can also query the rest interface by opening http://nodeIP:8332/rest/chaininfo.json in your browser.


You now have a full Bitcoin core node running on it's own. What's next ? Well I never blogged before, this is the first time I am outsourcing some of my work. I'm a passionnate enginner working on all kind of technologies. I've been dedicating half of my time to Bitcoin for the last 2 years already, so if this guide was usefull and want to go deeper , just let me know, depending on the feedback I get, i'll consider outsourcing more interesting work. For example next post could be about setting up an Electrum Server so you can safely use SPV wallets trusting your own fullnode.
Also I'm currently working on a trustless bitcoin payment processor called 8333, make sure you follow @_8333_ on twitter. I think I will release the project end of 2018. Ping me if interested.
The best way you can show support is via Bitcoin : 16FKGPiivpo3Z7FFPLdkoVRcV2ASBc7Ktu
submitted by larafale to Bitcoin [link] [comments]

Recommend Bitcoin REST API for .NET programmer / BlockExplorer API

Hi Bitcoin experts,
I need some advice. What's the best way for a Windows/.NET developer like me to access blockchain information via a REST/RPC API ?
The server app I'm building does the following on a fairly regular basis:
(1) Looks up all transactions involving a specified Bitcoin address and takes action based on the results, and...
(2) Executes outbound transactions, where the transaction bytes are supplied as a preconfigured hex-formatted byte stream.
Here's what I'm doing now:
There's a web API called Insight. It's used by Block Explorer and documented here at https://blockexplorer.com/api-ref. This is where I'm currently pointing my app. It works really well and seems to handle everything I throw at it but I'm concerned that as my load increases (e.g. peaking at 100 queries/minute or more), at some point the site operator will cut me off.
I've tried to mitigate the problem by finding other sites that support the same API. https://insight.bitpay.com is one. https://chain.localbitcoins.com is another. I put these sites in a text file and my app calls into the API on each site in a round robin fashion.
This works. Still though, I'm now encountering errors from the sites' respective CDNs that sit in front of some of the sites -- presumably because I'm running too many queries.
What's a more scalable solution for me?
I have no problem paying a few hundred bucks per month for an AWS server to run a service on my own -- one that only I would use. I'm not exactly sure how to do this though. The Insight API I'm using now, like much of the Bitcoin world, seems geared toward the Linux/Python crowd -- not old farts like me in the Windows/.NET world. I wouldn't even know how to install it.
I also ran across the RPC API located here at https://en.bitcoin.it/wiki/API_reference_(JSON-RPC). Does anyone have any feedback on it's viability? Would I basically be running my own "node" at that point? I wouldn't mind doing that if it runs on Windows 2016. My needs are simple. I'm not mining or anything like that; Just running tons of queries (max 100/min) and executing transactions (max 10/hr).
Any advice is appreciated.
submitted by festus_wingbam to Bitcoin [link] [comments]

fakd: The FAK Anywhere CLI Client & Server

These are new clients to support servers and devices that are not able to run FakeCoin-qt.
They should work on everything from a MIPS router to an IBM mainframe and anything in between.


$ fakd

Full node server.walletfunctionalitysoldseparately.
This has been used as the backend for the block explorer from day one.
Stable. Secure. Easy to set up. Supports JSON-RPC and WebSockets.

$ fakctl

Provides an easy way to query the fakd server using the same commands as the RPC console in FakeCoin-qt.
$ fakctl getmininginfo
"blocks": 17675,
"currentblocksize": 520,
"currentblockweight": 2080,
"currentblocktx": 1,
"difficulty": 467.80165986,
"errors": "",
"generate": false,
"genproclimit": 12,
"hashespersec": 0,
"networkhashps": 3667939,
"pooledtx": 0,
"testnet": false

$ fakwallet

Work in progress. Once finished can be a drop in replacement for fakecoind.


Step 1: Get a Go compiler

Step 2: Install fakd & fakctrl

go get -u fakco.in/fakd/...

Step 3: There is no step 3

The compiled binaries should now be in $GOPATH/bin ready to use.

Cross Compiling

Linux Server

GOOS=linux GOARCH=amd64 go install fakco.in/fakd/...

Raspberry Pi

GOOS=linux GOARCH=arm GOARM=5 go install fakco.in/fakd/...

My local FreeNAS because why not.

GOOS=freebsd GOARCH=amd64 go install fakco.in/fakd/...

Windows XP? Pentium 4? What? Why? ok...

GOOS=windows GOARCH=386 go go install fakco.in/fakd/...
submitted by Valken32 to FakeCoin [link] [comments]

Can some one post developer examples of using bitcoin core to form SegWit address's and transactions?

Is just not helpful to the everyday person. None of the examples actually use Core, nor do they talk about practical minimum changes needed for a real life migration.
A migration guide with real examples using bitcoin-core and testnet would really help people understand what its going to take to migrate.
I read that the RPC is changing how it returns bock data. And this can break many implementations. Is there a list of the other RPC changes?
It would be nice to get this updated with the new 13.1 commands https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list
And I dont see anything in here too, https://bitcoin.org/en/developer-reference#bitcoin-core-apis
Im looking for lists of new commands for generating segwit address's or transactions. And perhaps what the new Transactions JSON objects returned will look like
We cant save any space with SegWit unless services actually use it. And a few Cents saved on fee's means nothing compared to headache, money, and effort of paying devs to rewrite their code to use it. So staying ahead of this would be really helpfull to everyone.
submitted by AnonymousRev to Bitcoin [link] [comments]

Programming Bitcoin-qt using the RPC api (1 of 6) Bitcoin JSON-RPC Tutorial 6 - JSON Parameters and Errors Remote Controlling Kodi with JsonRpc Tutorial - Building Bitcoin Websites - How to Get The Price 1 of 2 Bitcoin JSON-RPC Tutorial 1

Bitcoin supports SSL (https) JSON-RPC connections beginning with version 0.3.14. See the rpcssl wiki page for setup instructions and a list of all bitcoin.conf configuration options. Allowing arbitrary machines to access the JSON-RPC port (using the rpcallowip configuration option ) is dangerous and strongly discouraged -- access should be strictly limited to trusted machines. Der Original-Bitcoin-Client speichert alle Bitcoin-Beträge als 64-Bit-Ganzzahlen (Integers), wobei 1 BTC als 100.000.000 (einhundert Millionen Satoshis) verarbeitet wird. In der JSON-API werden Beträge hingehen als Gleitkommazahlen mit doppelter Präzision dargestellt, also 1 BTC als 1.00000000. Wenn du Software schreibst, die das JSON-RPC-Interface verwendet, musst du auf mögliche ... Accounts explained • API calls list • API reference (JSON-RPC) • Block chain download • Dump format • getblocktemplate • List of address prefixes • Protocol documentation • Script • Technical background of version 1 Bitcoin addresses • Testnet • Transaction Malleability • Wallet import format Running Bitcoin with the -server argument (or running bitcoind) tells it to function as a HTTP JSON-RPC server, but Basic access authentication must be used when communicating with it, and, for security, by default, the server only accepts connections from other processes on the same machine. If your HTTP or JSON library requires you to specify which 'realm' is authenticated, use 'jsonrpc'. JSON RPC API Bitcoind compatible RPC api. My Wallet users can interact with their wallet using our JSON RPC api. It is intended to be fully compatible with the original Bitcoind RPC protocol however some method calls are not supported. No Blockchain Download - Save on bandwidth and disk space. No Need to run Bitcoind - Some VPS and shared hosting plans do not allow you to run custom processes ...

[index] [49241] [51049] [36160] [5787] [44862] [19460] [50172] [37892] [34095] [41070]

Programming Bitcoin-qt using the RPC api (1 of 6)

Bitcoin JSON-RPC Tutorial 3 - bitcoin.conf - Duration: 8:10. ... Programming Bitcoin-qt using the RPC api (1 of 6) - Duration: 3:17. Lars Holdgaard 4,678 views. 3:17. Great Lecture: Alan Watts ... In this video we look at the iOS Kodi Remote app and the underlying JsonRpc API that drives it. https://kodi.wiki/view/JSON-RPC_API/v9. how to make applications with Bitcoins. For the Love of Physics - Walter Lewin - May 16, 2011 - Duration: 1:01:26. Lectures by Walter Lewin. Bitcoin JSON-RPC tutorial. Set up your bitcoin.conf file and create custom settings with bitcoind. BTC: 1NPrfWgJfkANmd1jt88A141PjhiarT8d9U An introduction to the Bitcoin JSON-RPC tutorial series. BTC: 1NPrfWgJfkANmd1jt88A141PjhiarT8d9U