Bitcoin Core :: sendtoaddress (0.17.99 RPC)

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]

WIP: Blackpi - a stake device based on raspberry

Warning: This is a WiP and it's using Blackcoin Lore which is still in beta. Please be aware of that and backup your wallet.dat before you put any real values in this!
UPDATES
29.12.2017
22.06.2017
I am currently trying to set up blackoin on raspberry. Community members asked for a tutorial to compile it, so I will start with this here. Maybe in the future it would even be possible to turn it into a headless (=without screen and keyboard) image to put on an SD card and just boot up the wallet.
I used the latest Blackcoin Lore by janko33 for this process, however it should be quite the same with the "original" core wallet by rat4/johndolittle. Blackcoin Lore is not deemed as stable as it is still in beta, so it's up to you what source tree you take.
Please be also aware, that compiling on a small computer like raspi can take a while. Please also note that Lore is still in beta. The names in the archive are still "bitcoin". There is an update comming where the naming is correct and also maybe a few bugfixes.
** Tutorial: **
You first need to get raspbian. The lite image will work, it's a small version of the operating system without a graphical interface, so you will need ssh to operate it. The image is 294 MB but you will want to have a bigger card. 2GB is certainly too small, better get 16 or even 32GB - you also will need space for the blockchain!
To install it I followed this guide
https://hackernoon.com/raspberry-pi-headless-install-462ccabd75d0
Get the raspdian image file from:
https://www.raspberrypi.org/downloads/raspbian/
Also get Etcher from
https://etcher.io/
Etcher is a tool to write img files to an SD card/USB-stick.
After writing, open the card in your explorer and add a file "ssh". The file sould be empty and just be called "ssh" (not ssh.txt or something). It will tell raspi to activate ssh on boot.
Then boot up your raspi with the card and plug it into your network. Consult your router's LAN-page to find the device, it should register to your router as "raspberry" or so. Open up Putty and login to your raspi using pi as username and raspberry as password.
After login you can configure your raspi, please read the guide linked above for more details.
Note: One important thing that you should configure is your timezone! Use
sudo raspi-config 
Go to 4. Localisation Options and set the time to your timezone. If your time is way off, you would get troubles with staking, so make sure you always have the time set right!
After you got everything set up, get the build environment ready:
sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils #Installs alot and can take a while git clone -b Blackcoin-Lore https://github.com/janko33bd/bitcoin Blackcoin-Lore cd Blackcoin-Lore cd depends make -j 6 HOST=arm-linux-gnueabihf cd .. ./autogen.sh ./configure --prefix=`pwd`/depends/arm-linux-gnueabihf 
# note: ` = is a "backtick" not an apostroph. It causes the outpupt of "pwd" being inserted there
make -j 6 # -j n tells the compiler to use more cores, speeds that up a little (n = 1.5*cores installed) sudo make install 
This should compile so far. Update: Lore does not need Berkeley DB 4.8 to be installed, so just go with the DB provided by the repository works (libdb++-dev). (Thanks patcrypt)
After compile you can run the wallet with
lored 
And after it synced you have bitcoin-cli to control the wallet.
Issue: Synching blocks takes an awfully long time on raspi for some reason, even with Lore (that syncs blocks in a few hours instead of a whole day on a normal computer). If anyone knows how to speed up that process, please let us know!
This thread is a WiP. Please post all issues and errors here, I will then edit the OP to make it into a real, working tutorial.
On a note it was mentioned, that using an USB-stick here instead of a card would make sense since the cards are more prone to failure than USB-sticks. I will include setting it up on USB in a later version of this tutorial.
Some tips and tricks
Since compiling takes a longer time, it is recommented to run it in the console in a screen. Screen is a terminal tool that supports multiple windows in the same shell and, most important, detaches when your ssh connection breaks. Using screen you can simply reconnect and use screen -r to attach to your running shell again. To use screen, you need to install and then start it before you start the whole build process within a screen-shell.
sudo apt-get install screen screen #Start install/build process here #Type [ctrl-a] [d] to detach from the screen and put it in the background #After reconnect type screen -r to jump back into your running shell 
If you want to see your blocks being processed while the wallet syncs to the network, use the following command on a second shell (new Putty instance or screen window which you can open in screen with [ctrl-a] [c] (hit [ctrl-a] [n] to cycle through the windows in screen)
watch -n 5 lore-cli getinfo #This will execute the command "bitcoin-cli getinfo" every 5 seconds and thus display live update of your wallet info 
How to use that thing?
Here are a few helpful CLI commands, call them with lore-cli
help - Returns available commands help  - Returns detailed help to a  getinfo - Returns a descriptive information of your wallet, including balance getwalletinfo - Returns short information about your wallet, including balance, unconfirmed balance, immature balance, number of tx ect getaccountaddress 'raspi' - Returns an address for your wallet. If the account does not need to exist, it will be created with new address sendtoaddress   - Sends  to  sendtoaddress   substractfeefromaccount - Sends  minus tx fee to  getnewaddress  - Returns a new address for  each time you call the command.  is optional 
Further plans for this tutorial/project
Have fun!
Donations: B4nn2Y3SFC6whNGNvcQ2MvV1aQbZp3cZVF
submitted by mindphuk to blackcoin [link] [comments]

Trying to salvage some coins from 2013. Core (bitcoin-qt.exe v0.8.1-beta on Windows 8.1) is taking weeks to DL the blockchain as expected but keeps crashing now. Can I upgrade to a newer version without losing what I've gotten already (about 75% complete)?

Currently there are 134305 blocks remaining. When I start it up it works pretty smoothly for a while but then slows down. I leave it running while I'm gone but the last several days when I've come back it has crashed and gives me an I/O error, and I have to hit OK then start it back up. It does appear to be further along when I start it back up but not by a whole lot. So this has really slowed my progress. It's reindexed about 75% though, and so I don't want to start over from the beginning.
The drive it is on has ~400gb of free space so that's not the issue. I have 8gb of memory, and the task manager says bitcoin is taking up about 500mb, but it's using 60-85% of my cpu at a time.
If I download a newer version of core, I can just copy/paste the old wallet.dat file, right? But wouldn't it have to start downloading the entire blockchain again from the beginning? If so, is there any quicker method?
While typing this, it crashed twice. It only runs for about 10 minutes.
The version I have doesn't have any settings I can change. I read that there's a db size limit you can change in later versions that could help. This one does have a "debug window" with a command line console but I don't really know what to do with it. Here is a list of available commands: 
addmultisigaddress <'["key","key"]'> [account]
addnode
backupwallet
createmultisig <'["key","key"]'>
createrawtransaction [{"txid":txid,"vout":n},...] {address:amount,...}
decoderawtransaction
dumpprivkey
encryptwallet
getaccount
getaccountaddress
getaddednodeinfo [node]
getaddressesbyaccount
getbalance [account] [minconf=1]
getblock
getblockcount
getblockhash
getblocktemplate [params]
getconnectioncount
getdifficulty
getgenerate
gethashespersec
getinfo
getmininginfo
getnewaddress [account]
getpeerinfo
getrawmempool
getrawtransaction [verbose=0]
getreceivedbyaccount [minconf=1]
getreceivedbyaddress [minconf=1]
gettransaction
gettxout [includemempool=true]
gettxoutsetinfo
getwork [data]
help [command]
importprivkey [label] [rescan=true]
keypoolrefill
listaccounts [minconf=1]
listaddressgroupings
listlockunspent
listreceivedbyaccount [minconf=1] [includeempty=false]
listreceivedbyaddress [minconf=1] [includeempty=false]
listsinceblock [blockhash] [target-confirmations]
listtransactions [account] [count=10] [from=0]
listunspent [minconf=1] [maxconf=9999999] ["address",...]
lockunspent unlock? [array-of-Objects]
move [minconf=1] [comment]
sendfrom [minconf=1] [comment] [comment-to]
sendmany {address:amount,...} [minconf=1] [comment]
sendrawtransaction
sendtoaddress [comment] [comment-to]
setaccount
setgenerate [genproclimit]
settxfee
signmessage
signrawtransaction [{"txid":txid,"vout":n,"scriptPubKey":hex,"redeemScript":hex},...] [,...] [sighashtype="ALL"]
stop
submitblock [optional-params-obj]
validateaddress
verifymessage

submitted by closer_to_the_flame to Bitcoin [link] [comments]

How to Mine BiblePay on Linux

This guide is outdated, please refer to:
https://wiki.biblepay.org/POBH_Setup
https://wiki.biblepay.org/PODC_Setup
 
 
 
 
 
 
 
 
IMPORTANT - Evolution Upgrade:
Quick Start https://wiki.biblepay.org/Quick_Start
Evolution Upgrade Information https://wiki.biblepay.org/Evolution_Upgrade
Getting Started with Evolution https://wiki.biblepay.org/Getting_Started_with_Evolution
Generic Smart Contracts https://wiki.biblepay.org/Generic_Smart_Contracts
What is BiblePay Evolution? https://www.reddit.com/BiblePay/comments/bifvpk/biblepay_evolution_what_is_it/
Recommend 2GB RAM or can get stuck compiling (if 1GB RAM can use Swap File) Use Ubuntu 16.04
INFO
https://github.com/biblepay/biblepay-evolution/blob/masteBuildBiblePay.txt
INSTALL COMMANDS
apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils apt-get install libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler apt-get install git apt-get install curl build-essential libtool autotools-dev automake pkg-config python3 bsdmainutils cmake sudo add-apt-repository ppa:bitcoin/bitcoin sudo apt-get update sudo apt-get install libdb4.8-dev libdb4.8++-dev git clone http://github.com/biblepay/biblepay-evolution prefix=x86_64-pc-linux-gnu cd biblepay-evolution/depends make -j4 # Choose a good -j value, depending on the number of CPU cores available cd .. ./autogen.sh #Note: if echo `pwd` does not return your working directory, replace it with your working directory such as /biblepay-evolution/ ./configure --prefix `pwd`/depends/x86_64-pc-linux-gnu make # See more here: #https://github.com/biblepay/biblepay-evolution/blob/mastedoc/build-unix.md 

SWAP FILE
NOTE: if server is 1GB RAM, before running last command "sudo make", set up a swap file
free #check if swap is 0 dd if=/dev/zero of=/vaswap.img bs=1024k count=1000 mkswap /vaswap.img swapon /vaswap.img free #check if swap is 1024 sudo make 

RUN COMMAND LINE
cd src ./biblepayd -daemon 
OR
RUN GUI
Your GUI program will be located in: /biblepay-evolution/src/qt
./biblepay-qt 
You can also run it in the background (to free up your terminal) if you call it with:
./biblepay-qt & 
To start mining, instructions are the same as for Windows: Go to Tools -> Debug Console
Execute this command (to start mining with 8 threads)
setgenerate true 8 
From there you can use all other commands such as getmininginfo, getwalletinfo, etc. Execute help command to get the list of all available commands.
Note: GUI will be built automatically only if you meet the requirements for qt library, i.e. make sure you ran this line before compiling:
sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler 
BIBLEPAY is now Running!

SETUP CONFIG
Stop BiblePay and set up the config file to get starting nodes to sync with and enable mining:
./biblepay-cli stop cd ~/.biblepayevolution/ vi biblepay.conf addnode=node.biblepay.org gen=1 genproclimit=1 
Escape Key + : (Colon Key) + w + q + Enter (saves file and quits)

addnode --- adds a node to the list of nodes to connect to gen=1 --- turns on mining genproclimit --- sets number of threads to use when mining

Run BiblePay again and fully sync with network
cd ../biblepay-evolution/src ./biblepayd -daemon ./biblepay-cli getinfo 

USEFUL COMMANDS
./biblepay-cli help ./biblepay-cli getaccountaddress "" ./biblepay-cli getinfo ./biblepay-cli getmininginfo ./biblepay-cli setgenerate true 8 ./biblepay-cli sendtoaddress "insertAddressHere" 777 "" "" true ./biblepay-cli stop ./biblepayd -daemon top #CPU usage q to quit 

MINING THREADS: To change number of threads to use up for mining
a. Edit home/yourusername/.biblepayevolution/biblepay.conf file:
genproclimit=X 
and restart BiblePay -or- b. Menu >> Tools >> Debug Console >> Type command:
setgenerate true X 
(Replace X with number of threads Use top command to view CPU usage)

POOL
NOTE: To use the pool you must now use the external miner, not the wallet miner https://whitewalr.us/2019/biblepay-nomp-pool-mining.html
  1. Set up an account on pool website: https://pool.biblepay.org/
  2. Create Worker Username(s) - Workers tab >>> Add
  3. Enable pool and add Worker Username in ~/.biblepayevolution/biblepay.conf file, add these lines and save:
    pool=https://pool.biblepay.org workerid=insertWorkerUsernameHere
4. Restart BiblePay
./biblepay-cli stop ./biblepayd -daemon 
Setup Auto-Withdraw Navigate to Account >>> Account Settings >>> Verify your BBP Receiving Address >>> Click Authorize-Auto-Withdraws

UPDATE:

### Turn off/stop BiblePay
cd /home/yourname/biblepay-evolution/src ./biblepay-cli stop 

### Pull down latest Biblepay code and build it
cd /home/yourname/biblepay-evolution git pull origin master sudo make 

### Turn BiblePay back on and check version number
cd src ./biblepayd -daemon ./biblepay-cli getinfo ./biblepay-cli setgenerate true 8 

UPDATE IN ONE COMMAND:
./biblepay-evolution/src/biblepay-cli stop ; cd && cd biblepay-evolution/ && git pull origin master && sudo make && cd src && ./biblepayd -daemon && sleep 90 && ./biblepay-cli getmininginfo 
Note: the ";" says do this after, regardless of the outcome Note: && says do this after only if previous command finished with no errors

SPEED UP COMPILE:
To speed up the compile time, add -j4 or -j8 after make. This way it compiles using 4 or 8 threads instead of just 1.
./configure LDFLAGS="-L${BDB_PREFIX}/lib/" CPPFLAGS="-I${BDB_PREFIX}/include/" sudo make -j8 
Reference: http://www.linux-databook.info/?page_id=2319

RSYNC stop biblepay from your nodes compile on your fastest machine then rsync with your machines only src folder is required
rsync -avuz /root/biblepay-evolution/src/ [email protected]:/root/biblepay-evolution/src/ 
https://stackoverflow.com/questions/3299951/how-to-pass-password-for-rsync-ssh-command https://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/
people make cron jobs and rsync automatically

OUTDATED

Unofficial Bash Script
https://gist.github.com/anonymous/d1c1d35e3c8f67f5fb2e204479fa5c6b

Official Ubuntu Package
https://launchpad.net/~biblepay-official

Unofficial Ubuntu Package
https://www.reddit.com/BiblePay/comments/7rwqqs/unofficial_ubuntu_packages_available/

Unofficial Mine in One Line
https://www.reddit.com/BiblePay/comments/7ryuk1/mine_in_one_line/
NOTE: DONT RUN ON A COMPUTER WITH COINS -- THIS IS A CLEAN INSTALL SCRIPT

COMPILE WITHOUT GUI: https://bitcointalk.org/index.php?topic=2042657.msg21878317#msg21878317 https://bitcointalk.org/index.php?topic=2042657.msg21878389#msg21878389
ADVANCED:

DOCKER IMAGES (NOTE: I havent tested these, use at your own risk) https://hub.docker.com/gagaha/biblepay/ https://hub.docker.com/cryptozero/biblepay-opt/
submitted by togoshige to BiblePay [link] [comments]

Introduction and Test of Lightning Network Function Based on Qtum

Introduction and Test of Lightning Network Function Based on Qtum
https://mp.weixin.qq.com/s/SWTKnnDCq22W_G20pabpdg
The scalability of block chain is the key to realize massive transaction. The Current Bitcoin network can achieve a maximum of 7 processing power per second, the Qtum network can now achieve Bitcoin 10 with the processing power,But forMassive transactions are not enough (e-commerce applications, for example, in recent years Alibaba dual 11 shopping festival, Alipay network Peak transactions over 100000 transactions per second (TPS), Visa on the 2013 holiday period, the implementation of 47000 transactions per second (TPS)).In order to solveThe processing and storage problems brought about by this massive transaction, Joseph Poon presents a lightning network (lightning Network) solution, Lightning Networkis a centralized system, no need to trust each other and a third party can achieve real-time, massive network of transactions. The basic idea is that the trading parties in the chain through the trading script to create payment channels, after the two sides real-time, massive payment transactions in the chain completed, through the link to a number of channels can achieve any two points between the fund transactions, the completion of value transfer, without the trust of the third party for funds and settlement These transfers can be carried out along the routing path between untrusted parties through a contract.
C-lightning is a reference implementation of the Lightning network on the Bitcoin block chain, and can now support the payment channel creation, receiving and payment functions of the Lightning network. Qtum on the basis of c-lightning made a corresponding modification to form a qtum-lightning, so that under qtum can also achieve such as channel creation, real-time transactions, small transactions and other functions. The following tests are performed on these lightning network functions through the Qtum backbone Network (mainnet).
1. Test environment
Two sets of Ubuntu 16.04 of computers, installed with Qtum core and qtum-lightning. Qtum-core is used to connect the qtum backbone network, qtum-lightning the node to achieve the Lightning network function.
2. Lightning Network Test
This test, through a node and B-node to establish a payment channel to achieve real-time, small payment function, the main process includes: Capital preparation, connection establishment, channel establishment, payment transactions. The test realized the funds to deposit 0.1QTUM to the channel and paid 0.00000001 qtum from Node B to Node A.
2.1 Get information for two nodes First get information about the node for subsequent operations:
Node A:192.168.77.188
{ "id" : "0298b904689755a051441f1a8828e5d3aa46633cac21bc6bd8ce75328508e71ec0", "port" : 9735, "network" : "Qtum", "version" : "a787b86", "blockheight" : 28906 }
Node B:192.168.77.76
{ "id" : "03977a1862418d6989453f8f1fc793120830463b1beda1e951e39e947ec09f2208", "port" : 9735, "network" : "qtum", "version" : "a787b86", "blockheight" : 28927 }
2.2 Create a payment channel
The channel of Lightning Network is to realize the start of the chain trading, after the channel is established, it can realize the transaction under the chain, no need to broadcast to the chain. The creation process is to store the money that is used to establish the channel in the wallet address that is managed by the node, and to join the pool of funds, after which you can create a lightning network channel using a portion of the fund pool amount.
Prepare a sum of money:
First send the funds to node B node with address: cli/lightning-cli newaddr # to get a new address return: MUNPTmB7U8phjeibPDooKzVfsa2CQGPuME qtum-cli sendtoaddress MUNPTmB7U8phjeibPDooKzVfsa2CQGPuME 0.3 # deposit 0.3 QTUM funds
Get transaction records:
Qtum-cli getrawtransaction 6c73d136bacd91d59025fe5da1645864beaad69a8a6436d70b7dbfe02bbfecdd
Returns: 0200000001181bd1846baf6264b970086f3da5aa8d35c7604fcc601904d7c64cdc5417048a010000006b483045022100cdd4461077c76c90c879e97 414c6ae 8d1612209f145 12cc 9a18859 EF 229a67c902204 14cf 6149b8766 e80daf 5879948095850c84755c6 A 47c8f2d91 E 1e13250f117401210359a8 6e828760164102000000001976a9140 de97fc 8e6c79f362f324f6 b8adbeeedddf103bf88acef700000832d8b5d3118b7017b48a38b17237e4d1939e5cc7804eafceae6221f7a4efeffffff0280c3c9010000000017a914e088ca565bde2b4c6698d78a2ec647a53b02
Add to fund pool:
cli / lightning-cli addfunds 0200000001181bd1846baf6264b970086f3da5aa8d35c7604fcc601904d7c64cdc5417048a010000006b483045022100cdd4461077c76c90c879e97414c6ae8d1612209f14512cc9a18859ef229a67c90220414cf6149b8766e80daf5879948095850c84755c6a47c8f2d91e1e13250f117401210359a8832d8b5d3118b7017b48a38b17237e4d1939e5cc7804eafceae6221f7a4efeffffff0280c3c9010000000017a914e088ca565bde2b4c6698d78a2ec647a53b026e828760164102000000001976a9140de97fc8e6c79f362f324f6b8adbeeedddf103bf88acef700000
{ "outputs" : 1, "satoshis" : 30000000 }
Create Lightning Network Channel
First connect to node A through node B:
Cli/lightning-cli connect 192.168.77.188 9735 "0298b904689755a051441f1a8828e5d3aa46633cac21bc6bd8ce75328508e71ec0"
return:
{ "id" : "0298b904689755a051441f1a8828e5d3aa46633cac21bc6bd8ce75328508e71ec0" }
Node B deposits 0.1QTUM funds into the channel:
Cli/lightning-cli fundchannel "0298b904689755a051441f1a8828e5d3aa46633cac21bc6bd8ce75328508e71ec0" The actual value of 10000000 funds needs to be divided by 100000000 is based on QTUM pricing.
2.3 Making payments in the lightning network channel The payment process in the lightning network channel is initiated by the receiving side. The receiving party A first generates a receipt of its own receipt, and then the sending party B can obtain a value from B to the amount of the paid payment. A's payment routing, according to the routing information, can send itself to the A node.
Produce QTUM receipt document at node A: cli/lightning-cli invoice 1 a # Receive 0.00000001 QTUM Return:
{ "rhash" : "3b8d42fb10dd451f42babcc962c17c12b9163dd2b03a1f12f968789bb80c1cf2" }
At the Node B, the route to the A node to send funds is:
Cli/lightning-cli getroute 0298b904689755a051441f1a8828e5d3aa46633cac21bc6bd8ce75328508e71ec0 1 1 Back:
{
"route" :
[
{ "id" : "0298b904689755a051441f1a8828e5d3aa46633cac21bc6bd8ce75328508e71ec0", "channel" : "28926:2:0", "msatoshi" : 1, "delay" : 36 }
]
}
Send an amount of 0.00000001 QTUM to node A from node B:
Cli/lightning-cli sendpay '[ { "id" : "0298b904689755a051441f1a8828e5d3aa46633cac21bc6bd8ce75328508e71ec0", "channel" : "28926:2:0", "msatoshi" : 1, "delay" : 36 } ]' 3b8d42fb10dd451f42babcc962c17c12b9163dd2b03a1f12f968789bb80c1cF2
3 Check the result after payment
In the lightning network channel, payments can be settled immediately. After node B sends a sendpay to A, the new allocation result of the channel's funds is generated in real time. You can check the distribution of channel funds by viewing the information of nodes A and B.
A node
Cli/lightning-cli getpeers
return:
{ "peers" :
[
{ "unique_id" : 9, "state" : "CHANNELD_AWAITING_LOCKIN", "netaddr" : "::ffff:192.168.77.76:51860", "peerid" : "03977a1862418d6989453f8f1fc793120830463b1beda1e951e39e947ec09f2208" , "connected" : true , "owner" : " Lightning_channe ld" , "msatoshi_to_us" : 1 , "msatoshi_total" : 10000000000 } ] }
It can be seen that the A node received 0.00000001 QTUM, the total amount of the channel is unchanged, there is no formalities.
Node B
Cli/lightning-cli getpeers
return:
{
"peers" :
[
{ "unique_id" : 10, "state" : "CHANNELD_NORMAL", "netaddr" : "192.168.77.188:9735", "peerid" : "0298b904689755a051441f1a8828e5d3aa46633cac21bc6bd8ce75328508e71ec0", "connected" : true, "owner" : "lightning_channeld", " chanNel" : "28926:2:0" , "msatoshi_to_us" : 9999999999 , "msatoshi_total" : 10000000000 } ] }
After Node B stores 0.1QTUM and sends 0.00000001QTUM before sending it, it still has 0.09999999QTUM remaining. At the same time, the total amount of the channel seen does not change.
Through the above tests, it can be seen that the Qtum-based lightning network can basically realize real-time transactions and settlements under the chain. Only transactions involving two parties can be used without paying commissions, making it possible to make payments such as small payments. Theoretically, by setting up a large number of lightning network channels under the Qtum chain and placing transactions under the chain, real-time, massive transactions can be realized.
submitted by thisthingismud to Qtum [link] [comments]

A guide to sign a super bitcoin (SBTC) transaction offline with patched Electrum for paranoid. Supports any wallets supported by Electrum (including segwit-p2sh and bech32 and all BIP39 seeds). Later BCD will be added.

This is quite advanced. This guide assumes you have some basic experience with the command line, can run Linux and you understand the basics of keys/signing/broadcasting transactions. And that you can compile and run Bitcoin Core and run Electrum. Also, some JSON experience is also nice.
Move you bitcoins to safe addresses first. It is best to use a new seed. Although the procedure in this guide is safe even for hot addresses (containing bitcoins), there is always a risk of a critical mistake. So play it safe.
Why such a guide? I followed these steps because I did not want to expose the keys to any online machine at all. Even if the keys do not have any bitcoins, you can some day have bitcoins sent to these addresses or you have a fork that you have not claimed. All can be stolen if you exposed your key.
This procedure should work with everything that Electrum supports (except maybe F2A that may be not supported on the SBTC chain), so Electrum seed legacy or segwit, LedgeTrezor with legacy or segiwt-p2sh (m/'49) derivation. Similarly, any BIP39 seeds or a single key. are also fine.
  1. Download Electrum. git clone https://github.com/spesmilo/electrum
  2. Apply my patch patch -P0 also this article. The guide assumes that you use patched Electrum from now on.
  3. Run the patched Electrum and catch up with your wallets you want to claim (the wallets can and rather should be watch only, or on ledgetrezor, otherwise your keys are exposed). Now go offline or set localhost as your server that Electrum connects to so no connection is performed. It's required so Electrum will not update the wallet after you edit it.
  4. You can manually create a transaction from the command line but you can use Electrum GUI. You need to locate the wallet file and remove all the transactions from the wallet file except for the one that funds the address you want to claim (the wallet obviously must not be encrypted but for watch-only this is OK). This is tricky. You need to make sure, you gave a proper JSON file, so all the final commas must be dropped. So "addr_history":, "transactions": , "tx_fees":, "txi", "txo", and "verified_tx3": should only contain the funding transaction(s), i.e. the one that you want to spend from.
  5. Run Electrum and check if the wallet is OK. Electrum will show an error if not. You will probably make a few errors so go back to editing the wallet.
  6. Download SBTC bitcoin core clone. git clone https://github.com/superbitcoin/SuperBitcoin
  7. Compile it and let it sync the blockchain (it will take a long time). Run it it with as large -dbcache= as you can. If you have a Bitcoin blockchain you can copy the blocks up to the fork date and issue sbtcd with -reindex. It will just reindex them and it will be faster.
  8. Generate a sbtc address with sbtc-cli getnewaddress. You can skip this step and send directly to an exchange but this intermediate step is safer.
  9. Create a transaction in Electrum to this address. Select all the bitcoins and use as small fee as possible (SBTC blocks are empty so any fee above 1 SBTCsat/byte should be OK).
  10. Save the transaction to a pendrive
  11. Download and install Kubuntu 16.04 (Kubuntu has all the QT libraries for Electrum) on a pen drive.
  12. Copy patched Electrum and the save the transaction to a pen drive (separate from Kubuntu will be more convenient).
  13. Run Kubuntu from the USB without any network access. Run Electrum from the pendrive. Create a wallet from the seed or private keys. The wallets are stored in RAM so after you reboot the computer, they will be gone. Load the transaction, sign it and save it to the pen drive.
  14. Go back to the SBTC Core on the online machine. Display the raw transaction (starts with the hex=). Check in the SBTC Core if it is correct sbtc-cli decoderawtransaction hex
  15. If it looks fine (and your blockchain got synced), broadcast it sbtc-cli sendrawtransaction hex
If there is no error, congratulations, you sent the transaction to the specified address. If it is to your SBTC Core wallet, wait until it confirms and send it further with sbtc-cli setfee feeperkb sbtc-cli sendtoaddress "addr" value "" "" true true
I'm going to update this guide when I figure out the BCD transactions intrinsics. You can download and run the BitcoinDiamond Core clone in the meantime.
SBTC tips: 1KjuY8CTrwMhdLt3uF3hCcSgfkHMyo1ELf
submitted by PVmining to BitcoinAirdrops [link] [comments]

Qtum Quantum Chain Design Document -- Add RPC Calls (Seven)

Qtum original design document summary (7) -- Qtum added RPC call
https://mp.weixin.qq.com/s/JdJLxEIBjD255qey6ITO_g
Qtum's core program, qtumd, runs all core logic including validation and creation of blocks. However, to achieve interaction with qtumd, you need to rely on RPC (Remote Procedure Call). Through RPC, you can interact with qtumd from the outside to implement basic functions such as sending and receiving QTUM and obtaining blockchain information.
The initial version of the Qtum RPC call is compatible with Bitcoin. On this basis, because the Qtum blockchain is different from Bitcoin, and Qtum supports the smart contract function that Bitcoin does not have, it is necessary to add a new RPC or improve the existing RPC to achieve Qtum. Full interaction of nodes.
The following section captures the relevant original design documents (with Chinese translation) for the Qtum RPC call from the early Qtum development team (ps: QTUM<#> or QTUMCORE<#> in the document is the internal design document number):
 
QTUM-35: Add RPC call for off-chain contract execution
Description: In Ethereum there are some contract's that can be executed without needing to be on the blockchain. This is useful especially for retrieving the status and results from a contract, and will make no changes to the on-chain storage or state. We should Add an RPC call to cover this functionality
 
Callcontract [address] [data]
Returns/prints hex encoded return data
 
Task: Add an RPC (Remote Procedure Call) call to run under the chain Description: It is useful to have some contracts in Ethereum that are not working on the blockchain, especially when retrieving the status and results of contracts, and not changing the storage and status of the chain. We should add an RPC call to implement this functionality. Callcontract [address] [data] Return / print hexadecimal encoded return data
 
QTUMCORE-14: Add "callcontract" RPC call for off-chain computations
Description: There should be an RPC call that executes a contract without requiring interaction with the blockchain network, and thus without gas or other fees. Callcontract contract-address data (sender) This should execute the contract locally, and if the contract function returns data, it should be returned/printed by the RPC call. Sender is optional and does not require an owned vout (it can be any valid address)
Task: Add a "callcontract" RPC call for the calculation of the chain Description: There should be an RPC call that does not require interaction with the blockchain network to run the contract, so it does not require gas or other fees. The format is as follows: Callcontract contract-address data (sender) It can run the contract locally, and if the contract function returns data, the RPC call can return/print the data. The sender is optional and does not need to have vout (it can be any valid address).
The above two tasks add a callcontract RPC call interface to implement a local chain call contract, which is convenient for viewing contract status or obtaining contract results without changing any information on the chain.
 
QTUMCORE-7: Add "createcontract" RPC call
 
Description: A new RPC call should be added call "deploycontract" "createcontract". This RPC call will be used to deploy a new smart contract to the Qtum blockchain.
Syntax:
Deploycontract createcontract gas-price gas-limit bytecode [sender-address] [txfee] [broadcast]
If no address is specified, then it should be picked randomly from the wallet. If no outputs exist to spend using that sender-address, then an error should be shown and no transaction created.
Tsfee is optional and if not specified should use the same auto txfee as the rest of the wallet (for example sendtoaddress uses an auto txfee)
Broadcast should default to true. If broadcast is false, then the transaction is created and signed, and then printed to the screen in hex rather than broadcast to the network.
If the sender-address does have an output, but it is not enough to cover the gas costs and tx fees, then any UTXO owned by the wallet should be used by the transaction to cover those fees. (not all funds must come from sender -address, but the sender-address must be vin[0])
After execution, if broadcast is true, it should print the txid and the new contract address.
Task: Add "createcontract" RPC call
Description: Add a "createcontract" RPC call that will be used to deploy a new smart contract on the Qtum blockchain.
grammar:
Createcontract gas-price gas-limit bytecode [sender-address] [txfee] [broadcast]
Among them, sender-address (sender address) is optional. If no address is specified, an address will be randomly selected from the wallet. If there is no output available in the sender-address, an error will be displayed and the transaction will not be created.
Txfee (transaction fee) is optional. If not specified, it should use the same automatic txfee as the rest of the wallet (for example, the automatic txfee used by sendtoaddress)
Broadcast should be true by default. If broadcast is false, the transaction is created and signed, and will be printed to the screen in hexadecimal format instead of being broadcast to the network.
If the sender-address does have an output, but it does not cover the gas charges and transaction fees, then any UTXO owned by the wallet can be used by the transaction to pay for these charges. (Not all funds must come from sender-address, but sender-address must be vin[0])
After running, if broadcast is true, the transaction id and the new contract address are printed.
The above task adds the RPC call createcontract for creating and deploying new smart contracts, and describes the specific meaning of the parameters and their corresponding behavior.
 
QTUMCORE-13: Add "sendtocontract" RPC call
Description: An rpc call should be adding for sending data and (optionally) money to a contract that has been deployed on the blockchain.
The format should be:
Sendtocontract contract-address data (value gaslimit gasprice sender broadcast)
This should create a contract call transaction using OP_CALL.
Value defaults to 0.
If no address is specified, then it should be picked randomly from the wallet. If no outputs exist to spend using that sender-address, then an error should be shown and no transaction created.
Broadcast should default to true. If broadcast is false, then the transaction is created and signed, and then printed to the screen in hex rather than broadcast to the network.
If the sender-address does have an output, but it is not enough to cover the gas costs, tx fees, and value, then any UTXO owned by the wallet should be used by the transaction to cover the remainder. (not all funds must Come from sender-address, but the sender-address must be vin[0])
After execution, if broadcast is true, it should print the txid and the new contract address.
Task: Add "sendtocontract" RPC call
Description: In order to send data or funds to a contract already deployed on the blockchain, an RPC call should be added.
The format should be:
Sendtocontract contract-address data (value gaslimit gasprice sender broadcast)
You can use OP_CALL to create a contract call transaction.
Value defaults to 0.
The sender-address is optional. If no address is specified, an address will be randomly selected from the wallet. If there are no outputs available in the sender-address, an error will be displayed and no transaction will be created.
Broadcast is default to true. If broadcast is false, then the transaction is created and signed and then printed to the screen in hexadecimal format instead of being broadcast to the network.
If the sender-address does have an output, but the output is not sufficient to cover the gas fee, transaction cost, and value, then any UTXO owned by the wallet can be traded to pay the remaining fee. (Not all funds must come from sender-address, but sender-address must be vin[0])
After running, if broadcast is true, the transaction id and the new contract address should be printed.
In order to implement the contract on the chain, the above task adds a sendtocontract RPC call. Its functionality is similar to callcontract and can be used to run contracts. The biggest difference is that sendtocontract implements the chain call, which requires the cost of the Gas, and the running result needs to be verified by the entire network node, and will change the storage state on the contract chain.
 
QTUMCORE-81:create getTransactionReceipt rpc call
Description: We need to create getTransactionReceipt rpc call that returns the same values ​​as here:
https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethgettransactionreceipt
Most important part is the logs. they can either be stored into a separate db or use one of the existing tx or eth related db.
Task: Create getTransactionReceipt RPC call
Description: We need to create a getTransactionReceipt RPC call that returns the same value as in the following link:
https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethgettransactionreceipt
The most important part is the log. They can be stored in a separate database, or they can use existing transactions or Ethereum-related databases.
The above task adds a gettransactionreceipt RPC call to the smart contract log to get the contract transaction related logs, which is very useful for understanding the status of smart contracts.
 
QTUMCORE-90: add searchlogs rpc call
Description: we need to add an rpc call to allow us to search the eth event logs, we need to support similar parameters as eth:
https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethfilter
So it would be: searchlogs(fromBlock, toBlock, address, topics)
fromBlock, toBlock should support latest keyword
Adderss: optional should be an array of one or more addresses
Topics: optional (check the link above)
Unlike eth where you have to call watch, this method should just output the filtered logs
Task: Add searchlogs RPC call
Description: We need to add a PRC call that allows searching for smart contract event logs, and we need to support parameters similar to Ethereum:
https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethfilter
So its form is as follows: searchlogs(fromBlock, toBlock, address, topics)
fromBlock: toBlock should support the latest keywords
Address: an optional array of one or more addresses
Topics: optional (refer to the link above)
Unlike the Ethereum, which needs to call watch, this method only outputs the filtered log.
The above task adds an RPC for retrieving the smart contract event log to facilitate screening of event logs that satisfy the condition. Users can quickly get the contract status they care about.
 
QTUMCORE-92: add getcode and getstorageat rpc calls
Description: We need to implement Qtum equivalent of these 2 rpc calls:
https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethgetcode
https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethgetstorageat
No need to implement callback function for now.
For the default block, we can use block number, or keyword "latest" (default)
Task: Add getcode and getstorageat RPC calls
Description: We need to implement the QTP version of the RPC call equivalent to the following two RPCs:
https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethgetcode
https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethgetstorageat
There is currently no need to implement a callback function.
For the default block, we can use the block number, or the keyword "latest" (default)
The above task implements an equivalent RPC similar to Ethereum for obtaining contract code and storing information.
 
QTUMCORE-97: Change validation of contract rpc calls inputs
Description: Change validation of contract rpc calls inputs to accept only hex
Task: Modify the verification of the input value of the contract RPC call
Description: Modify the validation of the input value of the contract RPC call to accept only hexadecimal.
The above task stipulates that the RPC of the verification contract only accepts the hexadecimal data parameters, so that the rpc interface is as consistent as possible.
 
QTUMCORE-123: Add "excepted": to gettransactionreceipt
Description: We need to add the "excepted": field to gettransactionreceipt rpc call which lists "None" if no exception occured, or lists the actual exception that happened.
The same lessons is in callcontract call.
We need the change to be backward compatible, which means it should not break the current logs db, but people who want to see exceptions would have to recreate/reindex the logs db
Task: Add "excepted": field in gettransactionreceipt
Description: We need to add the "excepted": field to the gettransactionreceipt RPC call. If no exception occurs, it will display "None", otherwise it will list the actual exception.
The same is true for Callcontract calls.
We need to modify it to be forward compatible, which means it can't break the current log database, but if you want to see these exceptions, you must rebuild/reindex the log database.
The above tasks enable a number of RPCs associated with smart contracts to throw exceptions that are convenient for the user to understand the wrong running state of the contract and also help developers debug the code.
 
QTUMCORE-124:Add "changeToSender" to sendtoaddress and make sure the "Don't use change address" option also affects sendtoaddress
Description: We need to add "changeToSender" parameter to sendtoaddress rpc call, same as we did for sendtocontract.
Also we need to make sure the "Don't use change address" also affects sendtoaddress
Task: Add "changeToSender" to sendtoaddress and make sure the "Don't use change address" option is also valid for sendtoaddress
Description: We need to add the "changeToSender" parameter to the sendtoaddress RPC call, which is also added to the sendtocontract.
We also need to make sure that the "Don't use change address" option is also valid for sendtoaddress.
Due to the UTXO model, the change of the contract call is easy to confuse the user. Therefore, the above task adds the option of "do not use the change address" for the sendtoaddressRPC, from which the user can choose to return to the original address.
 
QTUMCORE-125: Add callcontract support to "createrawtransaction" rpc call
Description: As requested by some exchanges, which use "createrawtransaction" to create raw transactions before signing on a cold wallet, we need to add
1- raw contract data support to "createrawtransaction" rpc call.
Currently "createrawtransaction" supports two types of outputs in the outputs arguments:
First is "address": x.xxx which created a standard P2PKH output
The second is "data": "hex" which creates an OP_RETURN output
We need to add:
1- "callcontract":
{contractAddress:"address", data:"data", amount:"amount", gasLimit:"gaslimit", gasPrice:"gasPrice"}
Where:
contractAddress: a valid contract address (valid hash160 hex data)
Data: the hex data to add in the OP_CALL output (should validate it's hex data, you can check the validation done in sendtocontract)
Amount (optional): the value of the output (value in QTUM to send with the call), should be a valid amount, default 0
gasLimit (optional): the gas limit for the transaction (same as in sendtocontract), defaults to the default/DGP value
GasPrice (optional): the gas price for the transaction (same as in sendtocontract), defaults to the default/DGP value
After parsing and validation all the values ​​an OP_CALL output should be constructed
Similar to this:
CScript scriptPubKey = CScript() << CScriptNum(VersionVM::GetEVMDefault().toRaw()) << CScriptNum(nGasLimit) << CScriptNum(nGasPrice) << ParseHex(datahex) << ParseHex(contractaddress) << OP_CALL;
Task: Make the "createrawtransaction" RPC call support callcontract
Description: Before some transactions are signed on the cold wallet, use "createrawtransaction" to create the original transaction. At the request of these exchanges, we should add:
1 -- original contract data support for "createrawtransaction" RPC calls
Currently, for the outputs parameter, "createrawtransaction" supports two types of outputs:
The first type is "address": x.xxx, which creates a standard P2PKH output
The second type is "data": "hexadecimal", creating an OP_RETURN output
We need to add:
1 -- "callcontract":
{contractAddress:"address", data:"data", amount:"amount", gasLimit:"gaslimit", gasPrice:"gasPrice"}
among them,
contractAddress: a valid contract address (valid hash 160 hex data)
Data: hexadecimal data added in OP_CALL output (should be verified as hexadecimal data, you can check if it is verified in sendtocontract)
Amount (optional): The value of output (the value in QTUM, sent with this call), should be a valid value, the default is 0
gasLimit (optional): the gas limit of the transaction (same as sendtocontract), the default is the default/DGP value
gasPrice (optional): the gas price of the transaction (same as sendtocontract), defaults to the default/DGP value
After parsing and verifying all the values, you should build an OP_CALL output.
The build method is similar to the following:
CScript scriptPubKey = CScript() << CScriptNum(VersionVM::GetEVMDefault().toRaw()) << CScriptNum(nGasLimit) << CScriptNum(nGasPrice) << ParseHex(datahex) << ParseHex(contractaddress) << OP_CALL;
Prior to the above task, the createrawtransaction RPC call was consistent with Bitcoin and could only be used to send standard transactions. Qtum extends it to compatible contract transactions. From then on, the RPC can be used to create original contract transactions for developers or exchanges.
Summary
The RPC call is the most important way to interact with the qtumd core program. It provides a call interface for getting all kinds of information on the blockchain and local. It is the basis for many applications such as wallets, browsers, and exchanges. A good RPC interface design enables developers to get more accurate information and develop more feature-rich applications. Qtum provides developers with sophisticated RPC calls, making it possible for many third-party applications, such as predicting market projects, Bodhi.
submitted by thisthingismud to Qtum [link] [comments]

Testnet focus 2015-11-11: Let's build some tools.

The initial fork tests have gone well so far. We saw a lot of chaos due to how testnet works, but through it all it appears that the behavior of Bitcoin Core and BitcoinXT remained correct.
We've gotten our feet wet. Now it's time to work on our toolchain so we can run these tests efficiently and accurately. Some projects:
  1. We need to get a system together for collecting data and aggregating data from a large number of servers, preferably using only shell commands (like grep, tail and nc). DarthAndroid has made some progress on that, which he posted in the IRC chat:
    DarthAndroid jtoomim: "tail -f debug.log | nc bitcoin.dragon.zone 9000" will cause a node's log to start accumulating at http://bitcoin.dragon.zone/ by node IP address, which would allow someone to go back later and parse the logs for timing info. These log files are also available via rsync. Message me or DarthAndroid for a copy. Warning: they're gigabytes in size.
  2. We need a better way of maintaining and simultaneously controlling multiple VPSs. Something where you can type a keystroke in one prompt, and it gets simultaneously sent or mirrored over to other VPS ssh sessions would be awesome. I haven't gotten any good ideas how to implement this. There must be some sysadmins with experience with this kind of thing, right? Edit: Cluster SSH is exactly what I wanted. Get it. It's awesome.
  3. We need better spam generation methods. A lot of the spam generated so far has been made with a simple bash for loop. "for i in `seq 1 10000`; do ./bitcoin-cli sendtoaddress $address 0.0001; done" kind of stuff. (The "seq 1 1000" is in backquotes, which reddit markdown sometimes(?) turns into in-line code format.) We could use more variation in spam than that, and also better generation performance. Some other people have probably been working on this, but I don't know who. Chirp in? One of the things I want to test is the ability to handle transactions that are not in chains (i.e. lots of independent transactions), whereas I think the command above generates chains. Worth looking into. Edit: Check here for inspiration.
  4. We need better spam management. When a mining node is restarted, it forgets its mempool. Gavin posted a patch that he had used before that saves it to disk, but the patch had some other stuff in it too that I need to extract out. I'll work on that and try to get it into the fortestnet branch on my github (https://github.com/jtoomim/bitcoinxt/tree/fortestnet). Another option that we've been using so far is to do the line below on a server that is not being restarted. It's slow, and it uses a fair amount of network bandwidth (which can actually be a good thing for testing), and it mostly only works if the restarted node and the broadcasting node are connected.
    for line in `cli getrawmempool | sed -e 's/[{,"}]//g'`; do cli sendrawtransaction `cli getrawtransaction $line`; done 
  5. I need to hard-code the fortestnet branch to only run on testnet to make sure that people don't accidentally run it on mainnet. There are a few things in that branch that I think are not really safe enough for main.
  6. A couple of people (bitsko and rromanchuk) are working on bringing SPV wallets into the testing rounds as well. SPV wallets are expected to break during a hard fork. It is informative to document how exactly they break and how hard they break. We would like to have SPV wallets notify the user when a probable hard fork is occurring so that users don't unwittingly act on incorrect information. Users of SPV wallets need to be told to sit back and not interact during a hard fork, or to switch to a fully verifying wallet if needed.
  7. Memory usage and crashing: see comment below.
  8. Command-line aliases (rebroadcast fixed)
  9. Node IP list
  10. Block explorer -- crashes somewhat often due to constrained RAM; inform rromanchuk if it goes down.
  11. Bandwidth logging:
    mkdir ~/logs sudo apt-get install tcpstat giface=eth0 # unless it's not sudo tcpstat -f "port 18333" -o "%s,\t%B\n" -i $giface 0.1 -F | tee -a ~/logs/bw.log | nc bitcoin.dragon.zone 5005 
submitted by jtoomim to bitcoinxt [link] [comments]

Mt Gox UPDATE

https://www.mtgox.com/press_release_20140210.html
Original message from their website:
Dear MtGox Customers and Bitcoiners,
As you are aware, the MtGox team has been working hard to address an issue with the way that bitcoin withdrawals are processed. By "bitcoin withdrawal" we are referring to transactions from a MtGox bitcoin wallet to an external bitcoin address. Bitcoin transactions to any MtGox bitcoin address, and currency withdrawals (Yen, Euro, etc) are not affected by this issue.
The problem we have identified is not limited to MtGox, and affects all transactions where Bitcoins are being sent to a third party. We believe that the changes required for addressing this issue will be positive over the long term for the whole community. As a result we took the necessary action of suspending bitcoin withdrawals until this technical issue has been resolved.
Addressing Transaction Malleability MtGox has detected unusual activity on its Bitcoin wallets and performed investigations during the past weeks. This confirmed the presence of transactions which need to be examined more closely.
Non-technical Explanation: A bug in the bitcoin software makes it possible for someone to use the Bitcoin network to alter transaction details to make it seem like a sending of bitcoins to a bitcoin wallet did not occur when in fact it did occur. Since the transaction appears as if it has not proceeded correctly, the bitcoins may be resent. MtGox is working with the Bitcoin core development team and others to mitigate this issue.
Technical Explanation: Bitcoin transactions are subject to a design issue that has been largely ignored, while known to at least a part of the Bitcoin core developers and mentioned on the BitcoinTalk forums. This defect, known as "transaction malleability" makes it possible for a third party to alter the hash of any freshly issued transaction without invalidating the signature, hence resulting in a similar transaction under a different hash. Of course only one of the two transactions can be validated. However, if the party who altered the transaction is fast enough, for example with a direct connection to different mining pools, or has even a small amount of mining power, it can easily cause the transaction hash alteration to be committed to the blockchain.
The bitcoin api "sendtoaddress" broadly used to send bitcoins to a given bitcoin address will return a transaction hash as a way to track the transaction's insertion in the blockchain. Most wallet and exchange services will keep a record of this said hash in order to be able to respond to users should they inquire about their transaction. It is likely that these services will assume the transaction was not sent if it doesn't appear in the blockchain with the original hash and have currently no means to recognize the alternative transactions as theirs in an efficient way.
This means that an individual could request bitcoins from an exchange or wallet service, alter the resulting transaction's hash before inclusion in the blockchain, then contact the issuing service while claiming the transaction did not proceed. If the alteration fails, the user can simply send the bitcoins back and try again until successful.
We believe this can be addressed by using a different hash for transaction tracking purposes. While the network will continue to use the current hash for the purpose of inclusion in each block's Merkle Tree, the new hash's purpose will be to track a given transaction and can be computed and indexed by hashing the exact signed string via SHA256 (in the same way transactions are currently hashed).
This new transaction hash will allow signing parties to keep track of any transaction they have signed and can easily be computed, even for past transactions.
We have discussed this solution with the Bitcoin core developers and will allow Bitcoin withdrawals again once it has been approved and standardized.
In the meantime, exchanges and wallet services - and any service sending coins directly to third parties - should be extremely careful with anyone claiming their transaction did not go through.
Note that this will also affect any other crypto-currency using the same transaction scheme as Bitcoin.
Conclusion To put things in perspective, it's important to remember that Bitcoin is a very new technology and still very much in its early stages. What MtGox and the Bitcoin community have experienced in the past year has been an incredible and exciting challenge, and there is still much to do to further improve.
MtGox will resume bitcoin withdrawals to outside wallets once the issue outlined above has been properly addressed in a manner that will best serve our customers.
More information on the status of this issue will be released as soon as possible.
We thank you for taking the time to read this, and especially for your patience.
Best Regards, MtGox Team
submitted by Chilltyperiod to Bitcoin [link] [comments]

Use the BTCP full Node on a Ubuntu 16.04 LTS from Terminal

In this post I want to show some use of the CLI BTCP wallet from linux terminal.
DISCLAIMER:
First of all, use this tutorial with small amount of BTCP, for example i used 0,01 BTCP, until you feel confortable with commands. An error can happen easily and as result you can loose your money. Be careful! Do it at your risk!
I consider you have already installed the wallet following this instructions:
https://github.com/BTCPrivate/bitcoinprivate
I use Ubuntu 16.04 LTS 64bit, but commands are similar for the windows client.
Open a terminal from your Ubuntu Desktop:
[email protected]:~$ 
type:
[email protected]:~$ ./BitcoinPrivate/src/btcpd --daemon 
you should see the message:
BTCP server starting 
This means the wallet is running in daemon mode.
to stop the node just typing:
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli stop 
Answer:
BTCP server stopping 
You can also run the wallet in terminal, is nice to see it, let's try:
 [email protected]:~$ ./BitcoinPrivate/src/btcpd 
You will see the BTCP logo in text mode and the following info:
Thank you for running a Bitcoin Private node! You're strengthening the network and contributing to a social good. To ensure you are fully protecting your privacy when running BTCP, see . Block height | 340079 Connections | 8 Network solution rate | 8359387 Sol/s You are currently not mining. To enable mining, add 'gen=1' to your btcprivate.conf and restart. Since starting this node 1 minutes, 33 seconds ago: - You have validated 695 transactions! [Press Ctrl+C to exit] [Set 'showmetrics=0' to hide] 
See, you can also mine using the wallet! Nice! Just add gen=1 in the file btcprivate.conf. Probably you will never mine a coin, but still you to strenght the net, so, you can try if you want, then disable it when done:
Press CTRL and C to stop the server, then restart the server in daemon mode otherwhise you have to open a new terminal.
Let's find btcprivate.conf and other useful files:
[email protected]:~$ cd .btcprivate [email protected]:~/.btcprivate$ ls 
Answer:
blocks btcprivate.conf chainstate db.log debug.log fee_estimates.dat peers.dat wallet.dat 
You see here: btcprivate.conf and wallet.dat
Edit configuration file:
[email protected]:~/.btcprivate$ pico btcprivate.conf 
add gen=1 if you want to mine, then CTRL X and Y to save.
Restart the wallet....and....
Block height | 340091 Connections | 8 Network solution rate | 8211926 Sol/s Local solution rate | 0.0075 Sol/s Since starting this node 8 minutes, 5 seconds ago: - You have validated 684 transactions! - You have completed 1 Equihash solver runs. You are mining with the default solver on 1 threads. 
Congratulations! You are mining!
Now have a look to the wallet.dat file:
Nb: wallet.dat is your wallet!! If you delete it you will loose all your money!!!
wallet.dat is not encrypted, so, if you want to backup it i do as follows:
[email protected]:~/.btcprivate$ cp wallet.dat home/btcp/Desktop/wallet_btcp_back.dat 
Now you will find the wallet on your desktop. Zip it with an AES256 encryption and a strong password. Test if it works properly: extract it again and copy it in the directory, but before make an other copy of the wallet.dat file. Beware! I almost deleted the file once!
Nb: wallet.dat is your wallet!! If you delete it you will loose all your money!!!
Go back to your home directory, now, we want to play with our wallet:
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli help 
if everything is running properly, you will see a list of commands like this:
z_exportwallet "filename" z_getbalance "address" ( minconf ) z_getnewaddress z_getoperationresult (["operationid", ... ]) z_getoperationstatus (["operationid", ... ]) z_gettotalbalance ( minconf ) z_importkey "zkey" ( rescan startHeight ) z_importwallet "filename" z_listaddresses z_listoperationids z_listreceivedbyaddress "address" ( minconf ) z_sendmany "fromaddress" [{"address":... ,"amount":...},...] ( minconf ) ( fee ) z_shieldcoinbase "fromaddress" "tozaddress" ( fee ) zcbenchmark benchmarktype samplecount zcrawjoinsplit rawtx inputs outputs vpub_old vpub_new zcrawkeygen zcrawreceive zcsecretkey encryptednote zcsamplejoinsplit [email protected]:~$ 
Nice! Wallet is running properly. Now try an other command: getinfo
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli getinfo 
Answer:
{ "version": 1001251, "protocolversion": 180004, "walletversion": 60000, "balance": 0.00000000, "blocks": 340074, "timeoffset": 0, "connections": 8, "proxy": "", "difficulty": 167290.7158221716, "testnet": false, "keypoololdest": 1528833903, "keypoolsize": 101, "paytxfee": 0.00000000, "relayfee": 0.00000100, "errors": "" } [email protected]:~$ 
You see some useful info about your wallet/node:
blocks is the block heights, in this case is synced with the network. If not the number would be lower.
The wallet is connected to other 8 nodes, the balance is 0.00 BTCP
An other info command can be getblockchaininfo:
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli getblockchaininfo 
Answer:
{ "chain": "main", "blocks": 340074, "headers": 340074, "bestblockhash": "0000000145c0011d8e914f4ba68d1443c7ae0dd15bdf0bc300994dd5282710aa", "difficulty": 165971.1181999981, "verificationprogress": 0.9999992572690658, "chainwork": "0000000000000000000000000000000000000000000000000002e8314e4484da", "pruned": false, "commitments": 663480, 
we see syncing is almost finished:
"verificationprogress": 0.9999992572690658, (99,99999%)
Now test the wallet with command getwalletinfo
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli getwalletinfo 
Answer:
{ "walletversion": 60000, "balance": 0.00000000, "unconfirmed_balance": 0.00000000, "immature_balance": 0.00000000, "txcount": 0, "keypoololdest": 1528833903, "keypoolsize": 101, "paytxfee": 0.00000000 } [email protected]:~$ 
Now we want to send some btcp to this wallet. First we need an address, get one using getnewaddress:
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli getnewaddress 
Answer:
b1Cabjwvcce7N8ea9Gxxxxxxxxxxxxxxxx [email protected]:~$ 
Send at this address some BTCP, i sent 0.01 for testing purpose using your ledger, or your wallet, then check if the transaction is done:
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli getwalletinfo 
Answer:
{ "walletversion": 60000, "balance": 0.00000000, "unconfirmed_balance": 0.01000000, "immature_balance": 0.00000000, "txcount": 1, "keypoololdest": 1528833903, "keypoolsize": 101, "paytxfee": 0.00000000 } 
Done! Unconfirmed balance is 0.01! Just wait some confirmations.
after a while:
"walletversion": 60000, "balance": 0.01000000, "unconfirmed_balance": 0.00000000, "immature_balance": 0.00000000, "txcount": 1, "keypoololdest": 1528833903, "keypoolsize": 101, "paytxfee": 0.00000000 
Now send the coins to a new address. I am using this command:
sendtoaddress "btcpaddress" amount ( "comment" "comment-to" subtractfeefromamount )
subtractfeefromamount parameter can be true or false
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli sendtoaddress "b1Nb42GoK9kmsxxxxxxxxxxxxx" 0.01 "" "" true 
Answer:
2c5d3d1a3b5eec414b721d3817487f53c5eebxxxxxxxxxxxxxxx [email protected]:~$ 
Now check the wallet:
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli getwalletinfo 
Answer:
{ "walletversion": 60000, "balance": 0.00999808, "unconfirmed_balance": 0.00000000, "immature_balance": 0.00000000, "txcount": 2, "keypoololdest": 1528833903, "keypoolsize": 101, "paytxfee": 0.00000000 } 
I sent BTCP to the same wallet, so now i have less BTCP because of the fees.
try more commands:
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli listreceivedbyaddress 
Answer:
[ { "address": "b1Ep2wi2tUnKf433Vaxxxxxxxxxxxx", "account": "", "amount": 0.01000000, "confirmations": 6, "txids": [ "833533440a13c09fda6e90d0c5xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ] }, { "address": "b1Nb42GoK9kmsVZ9KPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "account": "", "amount": 0.00999808, "confirmations": 1, "txids": [ "2c5d3d1a3b5eec414b721d3817487f53c5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ] } 
This is the list of all used addresses.
Now find the money and the address where they are: use listunspent
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli listunspent 
Answer:
[ { "txid": "2c5d3d1a3b5eec414b721d381748xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "vout": 0, "generated": false, "address": "b1Nb42GoK9kxxxxxxxxxxxxxx", "account": "", "scriptPubKey": "76a914c6bdf3bc8aedxxxxxxxxxxxxxxxxxx", "amount": 0.00999808, "confirmations": 6, "spendable": true 
Well done.
Other useful commands can be: dumpprivkey to extract the private key from an address
Be careful! Exposing your private keys will end in loosing your money
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli dumpprivkey b1Ep2wi2tUnxxxxxxxxxxx 
Obtaining the pvt key:
Kz29e62Bmxxxxxxxxxxxxxxxxxxxxxxx 
And now, swipe the private key using the command: importprivkey "btcpprivkey" ( "label" rescan )
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli importprivkey "Kz29e62Bmxxxxxxxxxxxxxxxxxxxxx" "" true 
Let's do a shielded transaction!
first, you must have a z_address:
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli z_getnewaddress 
Answer:
zkEvCiVwgHb3NFi2ee9HGPjno2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
Check balaces, with also z_addres:
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli z_gettotalbalance 
Answer:
{ "transparent": "0.00999808", "private": "0.00", "total": "0.00999808" } 
Now send some BTCP to the z_address. First, check where BTCP are:
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli listunspent 
Output:
[ { "txid": "72f568d1ed51524b69f1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "vout": 0, "generated": false, "address": "b1LDhxBJxxxxxxxxxxxxxxxxxxxxxx", "scriptPubKey": "76axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxe088xx", "amount": 0.00889808, "confirmations": 556, "spendable": true } ] 
Now, sent a little transparent amount to the shielded address we got before:
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli z_sendmany "b1LDhxBJxxxxxxxxxxxxxxxxxxxxxx" "[{\"amount\":0.001, \"address\":\"zkEvCiVwgHb3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\"}]" 
Output:
opid-xxxxxxx-36c4-xxxx-beb2-xxxxxxxxxxxx 
Now your PC will work a while, it's CPU consuming...so...check:
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli z_getoperationresult 
until you receive the answer:
[ { "id": "opid-xxxxxx-xxxxx-4a5d-beb2-xxxxxxxxxx", "status": "success", "creation_time": 1529426885, "result": { "txid": "f87e8d5e96a8a0xxxxxxxxxxxxxxx" }, "execution_secs": 216.686332567, "method": "z_sendmany", "params": { "fromaddress": "b1LDhxxxxxxxxxxx", "amounts": [ { "amount": 0.001, "address": "zkEvCiVwgHb3NFxxxxxxxxxxxxxxxxxxR" } ], "minconf": 1, "fee": 0.0001 } } ] 
Done! On my old PC it took 216.68 seconds!
Next will be a reverse operation, from Shielded address to transparent address. See you soon....
Play with your full node wallet and have fun.
Remember: these commands are almost the same in all the bitcoin based coins, so you also learnt how to use many other wallets!
submitted by xivan71 to u/xivan71 [link] [comments]

RPC API - How can I check from which addresses bitcoins spent

I'm trying to implement some methods from rpc api.
In my app user's wallet is bitcoin address, and user can recieve and send bitcoins. For sending I use 'sendtoaddress' method, I can't use raw transactions right now, because my app also works with cryptocurrencies that doesn't have raw transactions. The problem is figure out from which bitcoin address (i.e. user's wallet) 'sendtoaddress' method took bitcoins in order to keep balances of my users correct, ideally using only RPC API.
I tried decoding raw transaction from txid and searching for 'vin's, but to success. I also thought about using bitcoin account instead of addresses, and create bitcoin account linked to bitcoin address, but how much account can wallet.dat hold? Can anyone have the solution?
submitted by kubikvid to Bitcoin [link] [comments]

Uso del Full Node Wallet BTCP Bitcoin Private da Terminale Linux

In questo post voglio dimostrare alcuni utilizzi del Full Node Wallet Bitcoin Private da terminale Linux
AVVERTENZA:
Usate questo tutorial con un piccolo quantitativo di BTCP, nell'esempio utilizzo 0,01 BTCP, almeno fino a quando non vi sentite sicuri nell'uso dei comandi. Fate attenzione! I comandi vengono eseguiti senza possibilità di annullarli, salvo in casi eccezionali, quindi fate tutto a vostro rischio.
PREMESSA:
Il wallet è già stato installato sul vostro PC o in un server Cloud usando le seguenti istruzioni:https://github.com/BTCPrivate/bitcoinprivate
Io uso una Ubuntu 16.04 LTS 64bit, ma i comandi sono simili anche per la distribuzione Windows.
Andrebbe anche aperta la porta TCP 7932 per avere un wallet perfettamente funzionante, ma ho fatto le prove senza aprirla.
Come attivare il firewall:
sudo ufw status
Please note: Make sure you enter the code in this order! If you do not, the program will not work! (If need be you can disable your firewall by entering: sudo ufw disable)
sudo ufw default allow outgoing sudo ufw default deny incoming sudo ufw allow ssh/tcp sudo ufw limit ssh/tcp sudo ufw allow http/tcp sudo ufw allow https/tcp sudo ufw allow 7932/tcp sudo ufw logging on sudo ufw enable
Apri un nuovo terminale troverai il prompt dei comandi, il mio è così, ma potrebbe essere differente:
[email protected]:~$ 
Scrivi quello che segue e premi invio:
[email protected]:~$ ./BitcoinPrivate/src/btcpd --daemon 
dovrebbe apparire il seguente messaggio:
BTCP Server Starting 
Questo significa che hai avviato il server (full node wallet) in modalità daemon, silenziosa. Per fermarlo scrivi:
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli stop 
Otterrai la risposta:
BTCP server stopping 
Puoi anche avviare il wallet in una finestra del terminale e vederlo lavorare, anzichè usare il comando --daemon
[email protected]:~$ ./BitcoinPrivate/src/btcpd 
Vedreai apparire un logo del BTCP formato da tanti caratteri e la seguente scritta:
Thank you for running a Bitcoin Private node! You're strengthening the network and contributing to a social good. To ensure you are fully protecting your privacy when running BTCP, see . Block height | 340079 Connections | 8 Network solution rate | 8359387 Sol/s You are currently not mining. To enable mining, add 'gen=1' to your btcprivate.conf and restart. Since starting this node 1 minutes, 33 seconds ago: - You have validated 695 transactions! [Press Ctrl+C to exit] [Set 'showmetrics=0' to hide] 
Block height è l'allineamento del wallet con la blockchain, richiede tempo perchè si allinei e scarichi tutta la blockchain, dipende dalla velocità del tuo collegamento e del tuo pc.Connections: 8 sono i nodi a cui è collegato il nostro wallet, che è un vero e proprio nodo.
Network solution rate è la "potenza" di tutta la rete di elaborare i blocchi in Sol/s
Con un full node puoi partecipare anche tu a rafforzare la rete, abilitando il mining. Si tratta di un solo mining, quindi le probabilità di risolvere un blocco sono veramente minime.
Per farlo basta aggiungere la voce gen=1 nel file btcprivate.conf
Proviamo a farlo. Blocchiamo il nodo con il comando CTRL + C e aspettiamo che appaia il prompt di comando.
Appena appare, inseriamo i seguenti comandi:
[email protected]:~$ cd .btcprivate [email protected]:~/.btcprivate$ ls 
ci siamo spostati nella directory nascosta (inizia per .) contenente i file di configurazione di BTCP, ls mostra i file contenuti:
blocks btcprivate.conf chainstate db.log debug.log fee_estimates.dat peers.dat wallet.dat 
puoi vedere il file btcprivate.conf e wallet.dat che è il file del wallet del nodo. Editiamo ora il file di configurazione, io uso PICO, un text editor per linux, ma potete usare anche vi se preferite:
[email protected]:~/.btcprivate$ pico btcprivate.conf 
inserite gen=1 in una riga vuota del file di configurazione e poi chiudete l'editor salvando con i comandi CTRL+X e Y
gen=1 
tornate nella directory home:
[email protected]:~/.btcprivate$ cd 
Fate riavviare il wallet con il comando:
[email protected]:~$ ./BitcoinPrivate/src/btcpd 
Otterrete il seguente output:
Block height | 340091 Connections | 8 Network solution rate | 8211926 Sol/s Local solution rate | 0.0075 Sol/s Since starting this node 8 minutes, 5 seconds ago: - You have validated 684 transactions! - You have completed 1 Equihash solver runs. You are mining with the default solver on 1 threads. 
Congratulazioni! State minando!
Ora diamo un occhiata al file wallet.dat
ATTENZIONE:
wallet.dat è il vostro wallet, se lo cancellate o lo riscrivete perderete tutti i BTCP che contiene. Consiglio di farne una copia ma attenzione: wallet.dat non è crittografato, quindi vi consiglio di crittografarlo prima di spostarlo dal PC: primo faccio una copia.
Bloccate nuovamente il wallet con CTRL+C
Al prompt scrivete:
[email protected]:~$ cd .btcprivate 
Poi copiate il file sul Desktop (scrivania) Sostituite la parola Desktop con Scrivania se avete installato Linux in Italiano
[email protected]:~/.btcprivate$ cp wallet.dat home/btcp/Desktop/wallet_btcp_back.dat 
Ora troverete il file wallet_btcp_back.dat sulla scrivania, crittografatelo AES256 usando il gestore degli archivi GUI e impostando una password resistente. Per verificare che tutto funzioni, vi consiglio di fare una altra copia di wallet.dat, estrarre il file dall'archivio crittato e sostituirlo al wallet.dat. se tutto funziona siete a posto. Se non siete sicuri non fate nulla e non usate questo wallet per mettere i vostri BTCP, ma nolo per scopi didattici con pochi spiccioli. E' facile fare errori e perdere tutto.
Tornate alla directory home e riavviate il server in daemon mode.
proviamo alcuni comandi usando il client: btcp-cli
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli help 
Se tutto funziona correttamente vi risponderà con la lista di tutti i comandi disponibili:
z_exportwallet "filename" z_getbalance "address" ( minconf ) z_getnewaddress z_getoperationresult (["operationid", ... ]) z_getoperationstatus (["operationid", ... ]) z_gettotalbalance ( minconf ) z_importkey "zkey" ( rescan startHeight ) z_importwallet "filename" z_listaddresses z_listoperationids z_listreceivedbyaddress "address" ( minconf ) z_sendmany "fromaddress" [{"address":... ,"amount":...},...] ( minconf ) ( fee ) z_shieldcoinbase "fromaddress" "tozaddress" ( fee ) zcbenchmark benchmarktype samplecount zcrawjoinsplit rawtx inputs outputs vpub_old vpub_new zcrawkeygen zcrawreceive zcsecretkey encryptednote zcsamplejoinsplit [email protected]:~$ 
Benissimo! Ora proviamo ad usare qualche comando, comunciamo con getinfo
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli getinfo 
Risposta:
{ "version": 1001251, "protocolversion": 180004, "walletversion": 60000, "balance": 0.00000000, "blocks": 340074, "timeoffset": 0, "connections": 8, "proxy": "", "difficulty": 167290.7158221716, "testnet": false, "keypoololdest": 1528833903, "keypoolsize": 101, "paytxfee": 0.00000000, "relayfee": 0.00000100, "errors": "" } [email protected]:~$ 
Nella risposta troverete alcune informazioni sul wallet, versione, block height, connections, balance = 0 ecc ecc
Proviamo ora getblockchaininfo:
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli getblockchaininfo 
Risposta:
{ "chain": "main", "blocks": 340074, "headers": 340074, "bestblockhash": "0000000145c0011d8e914f4ba68d1443c7ae0dd15bdf0bc300994dd5282710aa", "difficulty": 165971.1181999981, "verificationprogress": 0.9999992572690658, "chainwork": "0000000000000000000000000000000000000000000000000002e8314e4484da", "pruned": false, "commitments": 663480, 
La sincronizzazione in questo caso è terminata:"verificationprogress": 0.9999992572690658, (99,99999%)
Ora proviamo getwalletinfo
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli getwalletinfo 
Risposta:
{ "walletversion": 60000, "balance": 0.00000000, "unconfirmed_balance": 0.00000000, "immature_balance": 0.00000000, "txcount": 0, "keypoololdest": 1528833903, "keypoolsize": 101, "paytxfee": 0.00000000 } [email protected]:~$ 
Proviamo a ricevere dei BTCP da un wallet esterno, per prima cosa abbiamo bisogno di un transparent address da comunicare a chi ci invia i BTCP. Lo otteniamo con il comando getnewaddress:
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli getnewaddress 
Risposta: otteniamo un indirizzo (le xxx le ho aggiunte per mascherarlo)
b1Cabjwvcce7N8ea9Gxxxxxxxxxxxxxxxx [email protected]:~$ 
Inviate con un vostro wallet grafico o con electrum pochi BTCP, io ne ho mandati 0.01 per prova, dopo che li avete inviati, verificate se sono arrivati:
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli getwalletinfo 
Risposta:
{ "walletversion": 60000, "balance": 0.00000000, "unconfirmed_balance": 0.01000000, "immature_balance": 0.00000000, "txcount": 1, "keypoololdest": 1528833903, "keypoolsize": 101, "paytxfee": 0.00000000 } 
Arrivati ! "Unconfirmed balance" 0.01! non sono ancora confermati, quindi aspettate un po' e ripetete il comando:
"walletversion": 60000, "balance": 0.01000000, "unconfirmed_balance": 0.00000000, "immature_balance": 0.00000000, "txcount": 1, "keypoololdest": 1528833903, "keypoolsize": 101, "paytxfee": 0.00000000 
Adesso balance è 0.01 perfetto!
Proviamo adesso ad inviare questi BTCP ad un nuovo T-Address, per semplicità li invierò ad un indirizzo di questo wallet
Generiamo un nuovo indirizzo per riceverli:
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli getnewaddress 
Otteniamo:
b1Nb42GoK9kmsxxxxxxxxxxxxx 
copiamo l'indirizzo e usiamo il comando sendtoaddress "btcpaddress" amount ( "comment" "comment-to" subtractfeefromamount )
il parametro subtractfeefromamount puo' essere true or false a seconda se vogliamo che le fee vengano detratte dall'ammontare inviato o meno. Io invio tutto quanto al nuovo indirizzo e quindi le fee vanno dedotte da questo:
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli sendtoaddress "b1Nb42GoK9kmsxxxxxxxxxxxxx" 0.01 "" "" true 
Risposta:
2c5d3d1a3b5eec414b721d3817487f53c5eebxxxxxxxxxxxxxxx [email protected]:~$ 
Controlliamo cosa è successo:
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli getwalletinfo 
Risposta:
{ "walletversion": 60000, "balance": 0.00999808, "unconfirmed_balance": 0.00000000, "immature_balance": 0.00000000, "txcount": 2, "keypoololdest": 1528833903, "keypoolsize": 101, "paytxfee": 0.00000000 } 
Come vedete i BTCP sono diminuiti, perchè sono stati spostati su un nuovo indirizzo dello stesso wallet, pagando le fee. Ora vediamo esattamente dove sono e dove erano:
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli listreceivedbyaddress 
Risposta:
[ { "address": "b1Ep2wi2tUnKf433Vaxxxxxxxxxxxx", "account": "", "amount": 0.01000000, "confirmations": 6, "txids": [ "833533440a13c09fda6e90d0c5xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ] }, { "address": "b1Nb42GoK9kmsVZ9KPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "account": "", "amount": 0.00999808, "confirmations": 1, "txids": [ "2c5d3d1a3b5eec414b721d3817487f53c5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ] } 
Questo comando vi da informazione di tutti gli indirizzi usati, vediamo solo gli indirizzi non spesi: listunspent
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli listunspent 
Risposta:
[ { "txid": "2c5d3d1a3b5eec414b721d381748xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "vout": 0, "generated": false, "address": "b1Nb42GoK9kxxxxxxxxxxxxxx", "account": "", "scriptPubKey": "76a914c6bdf3bc8aedxxxxxxxxxxxxxxxxxx", "amount": 0.00999808, "confirmations": 6, "spendable": true 
Ottimo!
Ora possiamo provare un comando che ci permette di estrarre la chiave provata da un indirizzo pubblico. Questo puo' essete utile in occasione di Fork o Airdrop per estrarre le monete.
ATTENZIONE: esporre a terzi le chiavi private è rischioso. Potrebbero rubare tutto il contenuto. Fate molta attenzione. Estraete le private keys solo se necessario o per fare delle prove su indirizzi che contengono pochi spicci. In ogni caso, dopo aver usato la private key meglio non riutilizzare quell'indirizzo.
Il comando da utilizzare è dumpprivkey T-ADDRESS
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli dumpprivkey b1Ep2wi2tUnxxxxxxxxxxx 
L'output sarà tipo il seguente, al solito la chiave è mascherata con delle xxxxxx
Kz29e62Bmxxxxxxxxxxxxxxxxxxxxxxx 
Ora proviamo lo swipe della chiave, cioè il wallet andrà a cercare nella blockchain tutti gli importi collegati a quella pvt key, : importprivkey "btcpprivkey" ( "label" rescan )
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli importprivkey "Kz29e62Bmxxxxxxxxxxxxxxxxxxxxx" "" true 
Ora proviamo a fare delle Shielded Transaction, queste transazioni utilizzano la tecnologia zk-Snark per mascherare importi e indirizzi. Per prima cosa dobbiamo ottenere un indirizzo Shielded dal nostro wallet.
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli z_getnewaddress 
Eccolo generato:
zkEvCiVwgHb3NFi2ee9HGPjno2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
Vediamo dove sono i nostri BTCP, al momento sono solo su indirizzi Transparent:
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli z_gettotalbalance 
Answer:
{ "transparent": "0.00999808", "private": "0.00", "total": "0.00999808" } 
ora mandiamo qualche BTCP all'indirizzo z_address. Per prima cosa dobbiamo recuperare l'indirizzo t-address dove si trovano:
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli listunspent 
Eccoli:
[ { "txid": "72f568d1ed51524b69f1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "vout": 0, "generated": false, "address": "b1LDhxBJxxxxxxxxxxxxxxxxxxxxxx", "scriptPubKey": "76axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxe088xx", "amount": 0.00889808, "confirmations": 556, "spendable": true } ] 
Adesso mandiamo un po' di BTCP all'indirizzo Shielded che abbiamo ottenuto sopra. Il comando è abbastanza complicato ma funziona cosi':
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli z_sendmany "b1LDhxBJxxxxxxxxxxxxxxxxxxxxxx" "[{\"amount\":0.001, \"address\":\"zkEvCiVwgHb3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\"}]" 
Risultato:
opid-xxxxxxx-36c4-xxxx-beb2-xxxxxxxxxxxx 
Una transazione zk-Snark è piuttosto pesante da elaborare, il mio vecchio PC ci mette un po'. Meglio disattivare processi inutili. Si puo' controllare se l'operazione è andata a buon fine:
[email protected]:~$ ./BitcoinPrivate/src/btcp-cli z_getoperationresult 
al termine dovreste ricevere il seguente output:
[ { "id": "opid-xxxxxx-xxxxx-4a5d-beb2-xxxxxxxxxx", "status": "success", "creation_time": 1529426885, "result": { "txid": "f87e8d5e96a8a0xxxxxxxxxxxxxxx" }, "execution_secs": 216.686332567, "method": "z_sendmany", "params": { "fromaddress": "b1LDhxxxxxxxxxxx", "amounts": [ { "amount": 0.001, "address": "zkEvCiVwgHb3NFxxxxxxxxxxxxxxxxxxR" } ], "minconf": 1, "fee": 0.0001 } } ] 
Fatto! Sul mio vecchio PC ci sono voluti 216,68 secondi!
La prossima prova sarà un invio da indirizzo Shielded a Transparent.
Play with your full node wallet and have fun.Remember: these commands are almost the same in all the bitcoin based coins, so you also learnt how to use many other wallets!
submitted by xivan71 to u/xivan71 [link] [comments]

Crypto's Transcripts from Cannabis Road's forums and plan of action

POST 2 Quote from: ehleminator420 on August
"200 BTC seams like a very even or maybe "rounded" number to me. I don't know how they had their wallet setup and if this is a maximum fund withdraw or something... Not making any accusations just an observation. You are all obviously trying to help. I really loved CR and I know this community can and will bring it back." 
Well, the person who robbed us withdrew the funds in batches of 50 BTC at a time, in four separate batches.
http://blockchain.info/address/1CatnMd3jsEKhwhSLUf8V862im8gBp3NDF
The worst part though, is that in order for them do be able to do this, they had to be able to execute a command on our server to the Bitcoin daemon.
Code: [Select]
,/bitcoind sendtoaddress 1CatnMd3jsEKhwhSLUf8V862im8gBp3NDF 50
If this is the case, it means I majorly fucked up and left a huge security hole in the server. Or the attacker gained root access to our server. Either are devastating to us, and I have yet to figure out which one.
POST 3
Our plan of action, if Cannabis Road is to recover would be the following.

1) Identify exactly how the robbery occured.

2) Fix the bug/security hole that allowed the bug to occur.

3) Likely switch over to multisignature escrow only or FE only for traditional escrow

4) Identify who lost money in the robbery

5) Commense payback of robbery victims

I can and will only do this if the community wants me to.
If this is going to be something that is not embraced by the community, then I'd be better off hanging up my boots and retiring from the deep web.
Let me know everyone.
submitted by Trappy_CannabisRoad to CannabisRoad [link] [comments]

The MMGen wallet now supports BCC ("Bitcoin Cash", "Bitcoin ABC"). After August 1st, MMGen will work on both chains!

See the commit notes on Github for detailed usage instructions.
The instructions are also applicable for users of the Bitcoin Core wallet.
For those planning to exchange their BCH for BTC using a service such as ShapeShift, the two-blockchain approach described in the commit notes is the safest and most practical way to do it.
If you're a Bitcoin Core wallet user, you can skip the MMGen parts and just use the sendtoaddress RPC call on the respective chains to send your coins. Of course, this gives you no control over your inputs as MMGen does, but it will get the job done.
For those that have concerns about the replay protection, a short explanation: Bitcoin transactions aren't signed, their hashes are signed. After the August 1 HF, Bitcoin ABC will compute its transaction hashes in a completely different way than Core will, using a modified version of the BIP143 algorithm that Core will use for Segwit addresses after Segwit activates. But ABC is using this algorithm for ordinary, non-Segwit P2PKH addresses in a way that's incompatible with the existing Bitcoin protocol. The transaction hashes are different, so the signatures are different: one chain's signature cannot be used for the other chain's transaction, so replay is impossible.
submitted by mmgen-py to Bitcoin [link] [comments]

Setting up JM for a service

I run a reasonably active service (bustabit.com) which gets an average of ~477 deposits per day, and process ~206 withdrawals per day. And was hoping to use JM to improve the privacy of customers. But before I get into implementing it, I'd like to get your feedback on how it should be done or if it's stable enough to use in production.
Here's how my deposit system currently works:
If someone makes a withdrawal, I simply call sendtoaddressthrough rpc.

What would be the most straightforward/robust way to integrate JM into the flow? Also, note that I process a lot more deposits than withdrawals and can't really afford to make my withdrawal fees any higher. The latest version of bitcoin core tends to do an extraordinarily bad job at managing the wallets unspent output set (it churns all my outputs into ~0.01 BTC) so I was also hoping that JM would help keep it in control when acting as a liquidity provider
submitted by RHavar to joinmarket [link] [comments]

Feb. 10: Mt. Gox Statement concerning BTC withdrawals

https://www.mtgox.com/press_release_20140210.html
Dear MtGox Customers and Bitcoiners,
As you are aware, the MtGox team has been working hard to address an issue with the way that bitcoin withdrawals are processed. By "bitcoin withdrawal" we are referring to transactions from a MtGox bitcoin wallet to an external bitcoin address. Bitcoin transactions to any MtGox bitcoin address, and currency withdrawals (Yen, Euro, etc) are not affected by this issue.
The problem we have identified is not limited to MtGox, and affects all transactions where Bitcoins are being sent to a third party. We believe that the changes required for addressing this issue will be positive over the long term for the whole community. As a result we took the necessary action of suspending bitcoin withdrawals until this technical issue has been resolved.
Addressing Transaction Malleability MtGox has detected unusual activity on its Bitcoin wallets and performed investigations during the past weeks. This confirmed the presence of transactions which need to be examined more closely.
Non-technical Explanation: A bug in the bitcoin software makes it possible for someone to use the Bitcoin network to alter transaction details to make it seem like a sending of bitcoins to a bitcoin wallet did not occur when in fact it did occur. Since the transaction appears as if it has not proceeded correctly, the bitcoins may be resent. MtGox is working with the Bitcoin core development team and others to mitigate this issue.
Technical Explanation: Bitcoin transactions are subject to a design issue that has been largely ignored, while known to at least a part of the Bitcoin core developers and mentioned on the BitcoinTalk forums. This defect, known as "transaction malleability" makes it possible for a third party to alter the hash of any freshly issued transaction without invalidating the signature, hence resulting in a similar transaction under a different hash. Of course only one of the two transactions can be validated. However, if the party who altered the transaction is fast enough, for example with a direct connection to different mining pools, or has even a small amount of mining power, it can easily cause the transaction hash alteration to be committed to the blockchain.
The bitcoin api "sendtoaddress" broadly used to send bitcoins to a given bitcoin address will return a transaction hash as a way to track the transaction's insertion in the blockchain. Most wallet and exchange services will keep a record of this said hash in order to be able to respond to users should they inquire about their transaction. It is likely that these services will assume the transaction was not sent if it doesn't appear in the blockchain with the original hash and have currently no means to recognize the alternative transactions as theirs in an efficient way.
This means that an individual could request bitcoins from an exchange or wallet service, alter the resulting transaction's hash before inclusion in the blockchain, then contact the issuing service while claiming the transaction did not proceed. If the alteration fails, the user can simply send the bitcoins back and try again until successful.
We believe this can be addressed by using a different hash for transaction tracking purposes. While the network will continue to use the current hash for the purpose of inclusion in each block's Merkle Tree, the new hash's purpose will be to track a given transaction and can be computed and indexed by hashing the exact signed string via SHA256 (in the same way transactions are currently hashed).
This new transaction hash will allow signing parties to keep track of any transaction they have signed and can easily be computed, even for past transactions.
We have discussed this solution with the Bitcoin core developers and will allow Bitcoin withdrawals again once it has been approved and standardized.
In the meantime, exchanges and wallet services - and any service sending coins directly to third parties - should be extremely careful with anyone claiming their transaction did not go through.
Note that this will also affect any other crypto-currency using the same transaction scheme as Bitcoin.
Conclusion To put things in perspective, it's important to remember that Bitcoin is a very new technology and still very much in its early stages. What MtGox and the Bitcoin community have experienced in the past year has been an incredible and exciting challenge, and there is still much to do to further improve.
MtGox will resume bitcoin withdrawals to outside wallets once the issue outlined above has been properly addressed in a manner that will best serve our customers.
More information on the status of this issue will be released as soon as possible.
We thank you for taking the time to read this, and especially for your patience.
Best Regards, MtGox Team
ok, so where do we go from now?
submitted by waitdowhat to BitcoinMarkets [link] [comments]

Major Bug Found in Bitcoin Network By Largest & Oldest Bitcoin Exchange MtGox - Bitcoin Foundation Trying To Cover Up

The Bitcoin Foundation is trying to cover up the major bug that was found in Bitcoin's network by the oldest and largest Bitcoin exchange, MtGox. The Bitcoin Foundation claims that there is no such thing, but the fact that MtGox is experiencing major problems linked to this bug, reveals the lies spread by the Bitcoin Foundation.
Negative confirmed news:
MtGox:
ear MtGox Customers and Bitcoiners,
As you are aware, the MtGox team has been working hard to address an issue with the way that bitcoin withdrawals are processed. By "bitcoin withdrawal" we are referring to transactions from a MtGox bitcoin wallet to an external bitcoin address. Bitcoin transactions to any MtGox bitcoin address, and currency withdrawals (Yen, Euro, etc) are not affected by this issue.
The problem we have identified is not limited to MtGox, and affects all transactions where Bitcoins are being sent to a third party. We believe that the changes required for addressing this issue will be positive over the long term for the whole community. As a result we took the necessary action of suspending bitcoin withdrawals until this technical issue has been resolved.
Addressing Transaction Malleability MtGox has detected unusual activity on its Bitcoin wallets and performed investigations during the past weeks. This confirmed the presence of transactions which need to be examined more closely.
Non-technical Explanation: A bug in the bitcoin software makes it possible for someone to use the Bitcoin network to alter transaction details to make it seem like a sending of bitcoins to a bitcoin wallet did not occur when in fact it did occur. Since the transaction appears as if it has not proceeded correctly, the bitcoins may be resent. MtGox is working with the Bitcoin core development team and others to mitigate this issue.
Technical Explanation: Bitcoin transactions are subject to a design issue that has been largely ignored, while known to at least a part of the Bitcoin core developers and mentioned on the BitcoinTalk forums. This defect, known as "transaction malleability" makes it possible for a third party to alter the hash of any freshly issued transaction without invalidating the signature, hence resulting in a similar transaction under a different hash. Of course only one of the two transactions can be validated. However, if the party who altered the transaction is fast enough, for example with a direct connection to different mining pools, or has even a small amount of mining power, it can easily cause the transaction hash alteration to be committed to the blockchain.
The bitcoin api "sendtoaddress" broadly used to send bitcoins to a given bitcoin address will return a transaction hash as a way to track the transaction's insertion in the blockchain. Most wallet and exchange services will keep a record of this said hash in order to be able to respond to users should they inquire about their transaction. It is likely that these services will assume the transaction was not sent if it doesn't appear in the blockchain with the original hash and have currently no means to recognize the alternative transactions as theirs in an efficient way.
This means that an individual could request bitcoins from an exchange or wallet service, alter the resulting transaction's hash before inclusion in the blockchain, then contact the issuing service while claiming the transaction did not proceed. If the alteration fails, the user can simply send the bitcoins back and try again until successful.
We believe this can be addressed by using a different hash for transaction tracking purposes. While the network will continue to use the current hash for the purpose of inclusion in each block's Merkle Tree, the new hash's purpose will be to track a given transaction and can be computed and indexed by hashing the exact signed string via SHA256 (in the same way transactions are currently hashed).
This new transaction hash will allow signing parties to keep track of any transaction they have signed and can easily be computed, even for past transactions.
We have discussed this solution with the Bitcoin core developers and will allow Bitcoin withdrawals again once it has been approved and standardized.
In the meantime, exchanges and wallet services - and any service sending coins directly to third parties - should be extremely careful with anyone claiming their transaction did not go through.
Note that this will also affect any other crypto-currency using the same transaction scheme as Bitcoin.
Conclusion To put things in perspective, it's important to remember that Bitcoin is a very new technology and still very much in its early stages. What MtGox and the Bitcoin community have experienced in the past year has been an incredible and exciting challenge, and there is still much to do to further improve.
MtGox will resume bitcoin withdrawals to outside wallets once the issue outlined above has been properly addressed in a manner that will best serve our customers.
More information on the status of this issue will be released as soon as possible.
We thank you for taking the time to read this, and especially for your patience.
Best Regards, MtGox Team
Source:
https://www.mtgox.com/press_release_20140210.html
submitted by iPOOPEDonMyBunny to Bitcoin [link] [comments]

How To Send Bitcoin Wallet to Wallet Transfer Coinbase - How to Find your Bitcoin wallet address ✅ Where Is Cash App Bitcoin Wallet Address? How to get a Bitcoin Wallet Address - FREE & in under a minute How to buy bitcoin on CEX.IO and send to external wallet

Receiving Bitcoin. Open your Bitcoin.com wallet app and select Receive. Choose which wallet you want to receive Bitcoin to. Make sure you select a BCH wallet if you are receiving Bitcoin Cash or a BTC wallet if you are receiving Bitcoin. Your chosen wallet will generate an address that lets you receive coins. Every wallet comes with its own look, capabilities, and security features. However, all of these wallets use Bitcoin addresses as a public “account number” where Bitcoin can be sent. Whichever wallet you use, be sure to research it and take advantage of any security features it offers. I recommend Bitcoin newcomers use the Coinbase wallet Bitamp is an easy-to-use, client-side, open-source Bitcoin wallet. Connect with the blockchain to send and receive Bitcoin from anywhere, or any device, instantly. Create Wallet. Generate your own personal Bitcoin wallet. Receive coins to any of your public addresses (1..) (3..) (bc1..) and connect yourself to the blockchain. *bitcoin-cli help sendtoaddress. This is not part of the transaction, just kept in your wallet. 4. "comment_to" (string, optional) A comment to store the name of the person or organization to which you're sending the transaction. This is not part of the transaction, just kept in your wallet. The bitcoin address to send to. 2. "amount" numeric or string. required. The amount in BTC to send. eg 0.1. 3. "comment" string. optional. A comment used to store what the transaction is for. This is not part of the transaction, just kept in your wallet. 4. "comment_to" string. optional

[index] [27458] [8230] [7844] [3936] [869] [26181] [25638] [7683] [18136] [626]

How To Send Bitcoin Wallet to Wallet Transfer

If you want to someone to send you money to your Bitcoin account, Give them this address. you may donate to our network via Bitcoin as well :) Bitcoin address ... Spoiler alert: sending Bitcoin to someone else's wallet is more expensive than sending Litecoin, and it takes much longer, too. In this tutorial, I will compare sending them side-by-side. First, I ... This video explains how you can buy Bitcoin via credit card and send the Bitcoin directly to your favorite wallet. I used Binance BTC wallet as an example. Open an account in CEX https://cex.io/r ... I hope you enjoyed this video on how to get a bitcoin wallet address, below are the links to the 3 methods/wallets shown in the video as well as the bonus. 1. Electrum - https://electrum.org Buy Bitcoin in Canada using Shakepay and get $10 for free after your first $100 purchase: https://shakepay.me/r/HUQFI60 Get the Ledger Backup Pack – Includes Ledger Nano X & S

Flag Counter