Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won

  • Feedback


buzzkillb last won the day on January 12

buzzkillb had the most liked content!

Community Reputation

210 Excellent


About buzzkillb

  • Rank
    Senior Denarian

Personal Information

  • D Address

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. I adjusted the twitter card to also link to an IPFS image, and this is the final outcome. https://ipfs.io/ipfs/QmcocQitHWV1zNA3Hj3Ve225KnSUwzhh9U5GDCdqPBPxR7
  2. How to build a basic censorship resistant website using in wallet Jupiter Upload to IPFS. First download the wallet, Windows binary release located here https://github.com/carsenk/denarius/releases or compile from source. I am going to use the full features of the wallet for this example which does cost 0.001 Denarius per upload, but this can be done all for free. Start the wallet and go to Jupiter tab to upload your image, select Upload to IPFS and Pay 0.001 D to POD/Timestamp. The goal here is we are going to proof of data each upload to prove our images belong to us with an IPFS upload timestamp. The first line is the IPFS hash which is the link to our image. And the 2nd line is the timestamp of when the image was uploaded to IPFS. Create a text file to save these so its easier to remember. Our image is located here https://ipfs.io/ipfs/Qmci9khjndoearoPqpW6B6qfMWRe7rLnZ5BXdKYDaUhhRn and POD address is D82zkzEDgfHSuAmYjJ6LZbLb1W74YLPjM7 with a timestamp of upload. Also we will use the Proof of Data tab next to POD the image itself for a hash checksum that gets thrown into the Denarius blockchain. This will verify the authenticity of the file itself. Our POD Address for the image itself is DN7fo3bxDYNcREL7nKEWMDbEFbuqTdDLmA Once that is uploaded we want to save the full link to put into our webpage. Also save the POD address so we can include that into our webpage as proof. Create an index.html which we will post the image with a link to the Proof of Data (POD) address in a block explorer. <html> <head> <title>Denarius Fully Decentralize Website Example</title> <meta name="twitter:card" content="summary"> <meta name="twitter:title" content="CoronaVirus Death Tracker 2020"> <meta name="twitter:description" content="Cant Censor Us You Assholes"> <meta name="twitter:image" content="https://i.imgur.com/cl0MchI.png"> </head> <body> using <a href="https://github.com/carsenk/denarius/releases">Denarius</a> Jupiter IPFS Uploader<br> <center> <a href="https://denarius.io/"> <img src="https://ipfs.io/ipfs/Qmci9khjndoearoPqpW6B6qfMWRe7rLnZ5BXdKYDaUhhRn" alt="Denarius Logo"> </a> </center> <table style="border:1px solid black;margin-left:auto;margin-right:auto;"> <tr> <th>IPFS Image Upload Proofs</th> </tr> <tr> <td style="text-align:center">IPFS timestamp: Qmci9khjndoearoPqpW6B6qfMWRe7rLnZ5BXdKYDaUhhRn<td> </tr> <tr> <td style="text-align:center">POD Timestamp: <a href="https://www.coinexplorer.net/D/address/D82zkzEDgfHSuAmYjJ6LZbLb1W74YLPjM7">D82zkzEDgfHSuAmYjJ6LZbLb1W74YLPjM7</a><td> </tr> <tr> <td style="text-align:center">IPFS Image Link <a href="https://ipfs.io/ipfs/Qmci9khjndoearoPqpW6B6qfMWRe7rLnZ5BXdKYDaUhhRn"</a>Qmci9khjndoearoPqpW6B6qfMWRe7rLnZ5BXdKYDaUhhRn<td> </tr> <tr> <td style="text-align:center">POD of Image: <a href="https://www.coinexplorer.net/D/address/DN7fo3bxDYNcREL7nKEWMDbEFbuqTdDLmA">DN7fo3bxDYNcREL7nKEWMDbEFbuqTdDLmA</a><td> </tr> </table> <br> <a href="https://denariustalk.org/index.php?/topic/339-how-to-build-a-completely-censorship-resistant-web-page-with-denarius-and-ipfs/">Tutorial Here</a> </html> Save index.html and go back to the Proof of Data tab to hash checksum our index.html. Then upload to IPFS using POD again. The reason to do this is we will next message our friend to prove this is also my upload, which is giving a timestamp of the file itself and a checksum address of index.html which means this can't be faked and is authentic. Upload the final index.html to IPFS and POD this. Quickly we can use the infura or cloudflare links, or use the default IPFS and type this in ourselves, 3 examples below using same file hash we just uploaded. https://ipfs.infura.io/ipfs/QmXAJ1o76XtmcQERcMYfaA6uWJNrgWmhviRCTZ6vLEjJBB https://cloudflare-ipfs.com/ipfs/QmXAJ1o76XtmcQERcMYfaA6uWJNrgWmhviRCTZ6vLEjJBB https://ipfs.io/ipfs/QmXAJ1o76XtmcQERcMYfaA6uWJNrgWmhviRCTZ6vLEjJBB This POD address from above image DD6xmZTTH6TgdD8sn3tqB5MnWsS4xZhSb6 we can use in our message to someone. Go to the Messages tab. I sent to myself because I need more Denarius friends. Checking my inbox I can see I got something. And there is my message delivered. Go think of new ways you can use this to create censorship resistant apps as the Denarius command line daemon also allows all of these commands.
  3. Lets say you want to get around a firewall. Load up the Denarius QT from github. If you can't get onto github let someone know to release the binary somewhere easy to grab from like IPFS itself. Upload your File using the QT Wallet and wait for the link to propogate. You now have a link like this https://ipfs.infura.io/ipfs/Qmd6LFDvjZBJjQ5zh3fjBhyZXM5XsWAaVyPdJZ9vhNKSs5 Go to the messenger tab and send your message to another Denarius wallet address. I sent to myself in the wallet, but you get the idea.
  4. How to compile daemon in Ubuntu 19.10 https://github.com/carsenk/denarius/issues/256
  5. Lets say you want to create a simple website and share that on IPFS, we will add a subdomain at the end to make the website easier to find. First create an index.html file with your site. Now go to the QT wallet, click the Jupiter tab, select your file and click Upload to IPFS. Once the file uploads you get the IPFS hash. Click view on Infura or Cloudflare. Lets add one more twist to make this easier to find. I am going to use namecheap as an example of how to create a subdomain to the IPFS hash. Add a TXT record to your new IPFS hash. I am using ipfschain as my subdomain and dnslink=/ipfs/QmPm4AUBGsTjiKN3UtxTtarw4CKAcPNSVjNU18Tjrm6N7R as the IPFS hash. Save this, wait a few minutes and now try https://cloudflare-ipfs.com/ipns/ipfschain.pos.watch
  6. Lets make sure to run that python file over and over and over on every new block. Go into denarius.conf and add this line. I have my files in a influx directory. blocknotify=/home/USERNAME/influx/block.sh Lets create block.sh in the influx directory and throw our sample.py in there #!/bin/bash python /home/USERNAME/influx/sample.py make block.sh executable chmod +x block.sh stop and restart daemon to pick this change up denariusd stop denariusd If it all went right your grafana page should start updating the block count.
  7. Login to your localhost grafana. on the left click the gear -> data sources add data source search for influxdb use settings like this save and test Go back to the grafana homepage and click + and add query Your query would look something like this. Remember to select your mydb database, my screenshot is using another name for the DB. Visualization General Click Save at the top right Should see something like this on your homepage.
  8. Create a new database ininfluxdb. Run influx to get into the command prompt. influx create database CREATE DATABASE mydb use database USE mydb from a second command line, lets make a sample.py sample.py from denariusrpc.authproxy import AuthServiceProxy, JSONRPCException import time import sys import datetime import urllib import json from influxdb import InfluxDBClient # rpc_user and rpc_password are set in the denarius.conf file rpc_connection = AuthServiceProxy("http://%s:%[email protected]:32369"%("rpc_user", "rpc_password")) #test blocktest = rpc_connection.getblockcount() print(blocktest) # Configure InfluxDB connection variables host = "" # My Ubuntu NUC port = 8086 # default port user = "admin" # the user/password created for the pi, with write access password = "admin" dbname = "mydb" # the database we created earlier interval = 60 # Sample period in seconds # Create the InfluxDB client object client = InfluxDBClient(host, port, user, password, dbname) # think of measurement as a SQL table, it's not...but... measurement = "measurement" # location will be used as a grouping tag later blockchain = "denarius" blockcount = rpc_connection.getblockcount() block = rpc_connection.getblockbynumber(blockcount) grafanatime = block['time'] * 1000000000 hash = block['hash'] size = block['size'] height = block['height'] version = block['version'] merkleroot = block['merkleroot'] mint = int(block['mint']) timed = block['time'] nonce = block['nonce'] bits = block['bits'] difficulty = float(block['difficulty']) blocktrust = block['blocktrust'] chaintrust = block['chaintrust'] chainwork = block['chainwork'] previousblockhash = block['previousblockhash'] #nextblockhash = block['nextblockhash'] flags = block['flags'] proofhash = block['proofhash'] entropybit = block['entropybit'] modifier = block['modifier'] modifierchecksum = block['modifierchecksum'] data = [ { "measurement": measurement, "tags": { "blockchain": blockchain, }, "time": grafanatime, "fields": { #"block" : i, "hash" : hash, "size" : size, "height" : height, "version" : version, "merkleroot" : merkleroot, "mint" : mint, "time" : timed, "nonce" : nonce, "bits" : bits, "difficulty" : difficulty, "blocktrust" : blocktrust, "chaintrust" : chaintrust, "chainwork" : chainwork, # "nextblockhash" : nextblockhash, "flags" : flags, "proofhash" : proofhash, "entropybit" : entropybit, "modifier" : modifier, "modifierchecksum" : modifierchecksum } } ] # Send the JSON data to InfluxDB print(difficulty) client.write_points(data) If you run python sample.py you should see data appear in your influxdb. Run below a few times to throw data in. python sample.py In the other command line running influx already, make sure you are using the correct database and lets see if the data is inside. use mydb SELECT * FROM /.*/ LIMIT 10 You should see output, now we need to connect influxdb to grafana.
  9. How to pull stats from a coin daemon and throw them into influxdb, and then use Grafana to create a pretty graph. Setup a VM, VPS, raspberry pi, whatever to play on this. Anything breaks its pretty easy to delete stuff. Using ubuntu/debian for the example. The idea is relatively simple. Ask the daemon for information, throw that into influxdb and then have Grafana pull from that database. Install denarius daemon Install python denarius rpc https://github.com/buzzkillb/python-denariusrpc Install grafana https://grafana.com/docs/grafana/latest/installation/debian/ Install influxdb https://docs.influxdata.com/influxdb/v1.7/introduction/installation/ One this is all done we need a test to see if python is working with the daemon. Switch in rpc_user and rpc_password that's inside of denarius.conf test.py from denariusrpc.authproxy import AuthServiceProxy, JSONRPCException # rpc_user and rpc_password are set in the denarius.conf file rpc_connection = AuthServiceProxy("http://%s:%[email protected]:32369"%(rpc_user, rpc_password)) best_block_hash = rpc_connection.getbestblockhash() print(rpc_connection.getblock(best_block_hash)) # batch support : print timestamps of blocks 0 to 99 in 2 RPC round-trips: commands = [ [ "getblockhash", height] for height in range(100) ] block_hashes = rpc_connection.batch_(commands) blocks = rpc_connection.batch_([ [ "getblock", h ] for h in block_hashes ]) block_times = [ block["time"] for block in blocks ] print(block_times) test run python test.py Lets double check another test run to get current Denarius price from Coinvex. testcoinvex.py from denariusrpc.authproxy import AuthServiceProxy, JSONRPCException import requests, urllib, json #southexchange #coinvex coinvex_url = requests.get('https://coinvex.org/api/v1/public/getlastmarketdata') coinvex_data = json.loads(coinvex_url.text) coinvex_price = coinvex_data['result']['coins'] for r in coinvex_price: if r["name"] == "Denarius": coinvex_last = float(r["price"]) print format(coinvex_last, '0.8f') test run python testcoinvex.py Works? The next post will show how to take this data and put into influxdb.
  10. For some reason AMD64 and ARM chaindata's are not compatible. So I split them up here. https://chaindata.pos.watch/
  11. Restarting the wallet should help get past where its getting stuck. Otherwise latest chaindata is located here https://chaindata.pos.watch/
  12. I am keeping up to date chaindata here, as of now it should updated about every 3 days.. https://chaindata.pos.watch/ ARM really doesn't like to sync with the AMD64 (typical Intel/AMD PC/Windows/MacOS) version so I have an ARM wallet daemon setup as well for this. For a Raspberry Pi4 or other ARM board/VPS you probably want the ARM pichaindata.
  • Create New...