Pages:
Author

Topic: HZ/NXT: assetparser.py >40 columns per asset | shareholders.py inner circle PM (Read 7536 times)

legendary
Activity: 902
Merit: 1001
Free trial of #AltFolio = save time, react faster
Small hint for anyone working with APIs (which often return JSON results) - get a

REST client

Often they come as browser extensions/add-ons. Examples are:

Chrome - Advanced REST client - https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo
Opera - RestMan - https://addons.opera.com/en/extensions/details/restman
Firefox - no success, this one promises but doesn't deliver https://addons.mozilla.org/en-us/firefox/addon/jsonview/ (FF users: Please tell me what you are using)

Then put in the URL, e.g.

http://62.194.6.113:7876/nxt?requestType=getAsset&asset=13634799205909171438

and instead of a wall like this

Quote
{"initialQuantityQNT":"5000000","quantityQNT":"5000000","accountRS":"NXT-LJBY-6JQ6-WQV6-HA2AY","decimals":0,"name":"AAssetNXT","description":"AAssetNXT is the 'AltSheets Asset on Nxt'. 5,000,000 AAssetNXT shares are issued, representing 5% of all future profits of AltSheets software (like AltFolio, and assetparser.py - see their bitcointalk threads). Objectives of AAssetNXT are: To develop, improve, and popularize AltSheets software - and to reward investors by sharing 1% of all AltSheets profits per each 1,000,000 AAssetNXT; paid as regular dividends to AAssetNXT holders. Check asset ID and issuer ID (NXT-LJBY-6JQ6-WQV6-HA2AY alias 'AAssetNXTissuer') before trading, there may be copycat assets! More infos at http:\/\/altsheets.ddns.net\/aassetnxt or twitter @AAssetNXT","requestProcessingTime":0,"asset":"13634799205909171438","account":"18383702630381207870"}


you can press "JSON", and it will look like this:

Quote
{
    "initialQuantityQNT": "5000000",
    "quantityQNT": "5000000",
    "accountRS": "NXT-LJBY-6JQ6-WQV6-HA2AY",
    "decimals": 0,
    "name": "AAssetNXT",
    "description": "AAssetNXT is the 'AltSheets Asset on Nxt'. 5,000,000 AAssetNXT shares are issued, representing 5% of all future profits of AltSheets software (like AltFolio, and assetparser.py - see their bitcointalk threads). Objectives of AAssetNXT are: To develop, improve, and popularize AltSheets software - and to reward investors by sharing 1% of all AltSheets profits per each 1,000,000 AAssetNXT; paid as regular dividends to AAssetNXT holders. Check asset ID and issuer ID (NXT-LJBY-6JQ6-WQV6-HA2AY alias 'AAssetNXTissuer') before trading, there may be copycat assets! More infos at http://altsheets.ddns.net/aassetnxt or twitter @AAssetNXT",
    "requestProcessingTime": 0,
    "asset": "13634799205909171438",
    "account": "18383702630381207870"
}

Much more readable, no?

Hope that helps
 Smiley
legendary
Activity: 902
Merit: 1001
Free trial of #AltFolio = save time, react faster
... preparing to send the next AAssetHZ/NXT newsletter, exclusively available only to my shareholders.

First, I have done a test run of my fabulous
shareholders.py  version v32
which is sending individual unique messages to all shareholders of the test-asset 'beautiful' (id: 5903523947573024709).

Code:
--------------------------------------------------
Sending messages to all shareholders of
'beautiful' (assetId = 5903523947573024709)
--------------------------------------------------
from sending account  NHZ-VJ23-6K9N-33Z2-4DHQV
also known as: [u'BeautifulIssuer', u'altsheetstestaccount03', '']

Step 1: Parsing the blockchain for all shareholders
[02:46:23.654]  nhz:
[02:46:23.684]  API-downloading assets for 1 given ids ...
[02:46:24.703]  API-downloading assets for 1 given ids: 1 assets. DONE.
[02:46:24.704]  B.E.-API-downloading all account ids (from NHZ block explorer) ...
[02:47:53.509]  B.E.-API-downloading all account ids (from NHZ block explorer): 5173 accounts. DONE.
[02:47:53.509]  API-Downloading 5173 accounts (async, MAXTHREADS=1000) ...
[02:48:09.796]  API-Downloading 5173 accounts (async, MAXTHREADS=1000): 5173 threads finished. DONE.
[02:48:09.815]  pickling 'allAccounts' API results to file, for later reuse ...
[02:48:10.869]  pickling 'allAccounts' API results to file, for later reuse: DONE.

Code:
[02:48:10.926]  Funcfacts HZ: 2551 accounts are holding (median 152.0 mean 392002.4) HZ, and 783 are holding assets.
[02:48:10.926]  Found: HZ asset 'beautiful' (5903523947573024709).
[02:48:10.926]  Workaround for OLDAPI - go through all accounts, to collect asset holders ...
[02:48:10.951]  Analyzed 783 shareholders, with 1531 asset balances.
[02:48:10.951]  Workaround for OLDAPI - go through all accounts, to collect asset holders: DONE.
[02:48:10.951]  Getting all info about the accounts that are holding this asset 5903523947573024709 ...
[02:48:10.951]  Identifying trades buyers and sellers the complicated way, for old API ...
[02:48:11.963]  From 1 assets with trades, a total of 5 trades downloaded.
[02:48:11.963]  Funfacts Trades: Among the 1 assets with trades ...
[02:48:11.964]  ... number of trades: min=5 mean=5.0 median=5.0 max=5
[02:48:11.964]  ...
[02:48:11.964]  extracting all txIds from trades ...
[02:48:11.964]  extracting all txIds from trades: 5 trades with 10 orders of type ('askOrder', 'bidOrder'): 8 unique orderTxs. DONE.
[02:48:11.966]  API-Downloading 8 Order transactions (async) ...
[02:48:13.289]  API-Downloading 8 Order transactions (async): 8 threads finished. DONE.
[02:48:13.290]  extracting sellers of trades from askOrder (and buyers from bidOrder)-transactions ...
[02:48:13.290]  extracting sellers of trades from askOrder (and buyers from bidOrder)-transactions: 5 trades. DONE.
[02:48:13.290]  Identifying trades buyers and sellers the complicated way, for old API: DONE.


Code:
[02:48:13.290]  API-Downloading 4 accounts (async, MAXTHREADS=1000) ...
[02:48:14.321]  API-Downloading 4 accounts (async, MAXTHREADS=1000): 4 threads finished. DONE.
[02:48:14.321]  API-Downloading all account aliases for 4 accounts (async, MAXTHREADS=1000) ...
[02:48:15.368]  API-Downloading all account aliases for 4 accounts (async, MAXTHREADS=1000): 4 threads finished. DONE.
[02:48:15.368]  Getting all info about the accounts that are holding this asset 5903523947573024709: finished. DONE.
[02:48:15.368]  Analyzing the 4 accounts that are holding this asset 5903523947573024709 ...
[02:48:15.368]  Analyzing the 4 accounts that are holding this asset 5903523947573024709: DONE.

all addresses with public keys:
{u'NHZ-4BHN-8FBZ-TVJS-DMGF6': u'cfa2d418cb99f9740c37843262fae2ca27c3490c6f6d57dafd494ba748e1e71c', u'NHZ-N7PX-MTZZ-VQGE-HHYZ4': u'c7ae7deeb8458952c3be621bd407c7ff73b8d4af9d3ec377bcff05388419b376', u'NHZ-VJ23-6K9N-33Z2-4DHQV': u'2f57ed957453207b926c8466944856d9e32f89142f327d9e25fb9dbf9788f512', u'NHZ-QEQG-G5N8-8ASD-FYHFR': u'63f26ee1f2389f5fe08da039644dde51fc02ac23419d51aa445f7900f00d0355'}

Asset 'beautiful' (5903523947573024709) has 4 shareholders:

accountRSassetId_assetBalance_countOfDifferentAssets_HZ-balance_firstTrade_numBuysOfThisAsset_numSellsOfThisAsset_numTradesAllAssets_name_firstAlias_title
NHZ-VJ23-...5903...33.13901    117.027 Apr 201504BeautifulIssuertestaccount03None
NHZ-4BHN-...5903... 3.71921     11.609 Jul 201520testaccount02None
NHZ-QEQG-...5903... 4.14171      5.0testaccount01None
NHZ-N7PX-...5903... 1.000161532441.5altsheetsNone


Code:
Step 2:
Making passwords, compiling the messages from template, checking lengths.
4 new passwords generated
passwords backed up: 4
commands written to .sh file

Have a quick look at these passwords, so they are not obscene :-)
['1ncc1ic5', 'ccqp6989', '5xhkzxi5', '39fiqf17']

Sample message:
--------------------------------------------------
Code:
Hello shareholder
of HZ-asset 'beautiful' (id 5903523947573024709).

Not from a human :-) but a generated message:

Info: There is exclusive news for you!
Goto: Secret area --> innercircle at

http://altsheets.ddns.net/shareholders

Your personal credentials are:
  username: NHZ-4BHN-8FBZ-TVJS-DMGF6
  password: 1ncc1ic5

Please give feedback that you received this.

Thanks
       your AltSheetsDev
Code:
--------------------------------------------------

Step 3: Checking balance
The sending account NHZ-VJ23-6K9N-33Z2-4DHQV has a balance of 117.01 HZ.


Step 4: Sending 4 encrypted messages
only continue here if you are totally sure:
Please type  yes  :yes
------------------
start sending. Please be patient:
NHZ-4BHN-8FBZ-TVJS-DMGF6  success=True txID=15659411252527656269
NHZ-N7PX-MTZZ-VQGE-HHYZ4  success=True txID=9777091488403897496
NHZ-VJ23-6K9N-33Z2-4DHQV  success=True txID=7245079009501896933
NHZ-QEQG-G5N8-8ASD-FYHFR  success=True txID=11991134932698531881
ready.

Code:
Step 5: Linux commands to set the password for each shareholder. Do this now:
# apt-get install apache2-utils  ## install 'htpasswd'
# sudo htpasswd -cb /usr/share/nginx/.htpasswd dummyuser dummypassword  ## -c = create file with dummyuser
# sudo htpasswd -D  /usr/share/nginx/.htpasswd dummyuser  ## -D = delete dummyuser
sudo htpasswd -b /usr/share/nginx/.htpasswd NHZ-VJ23-6K9N-33Z2-4DHQV 5xhkzxi5
sudo htpasswd -b /usr/share/nginx/.htpasswd NHZ-4BHN-8FBZ-TVJS-DMGF6 1ncc1ic5
sudo htpasswd -b /usr/share/nginx/.htpasswd NHZ-QEQG-G5N8-8ASD-FYHFR 39fiqf17
sudo htpasswd -b /usr/share/nginx/.htpasswd NHZ-N7PX-MTZZ-VQGE-HHYZ4 ccqp6989


Step 6: Who enabled you to do this?
Please give a reward to AltSheetsDev now.

How much HZ you want to send? (0 to skip):  100  [ better send 100,000 :-) ]
Thanks. Sending now (please be patient):
donation success=True txID=13622927214914069668 to=NHZ-N7PX-MTZZ-VQGE-HHYZ4

Code:
Step 7:
Test the webaccess, that it really works. Monitor the webserver logfiles if you can.
Use all ways to inform your shareholders, otherwise they might not open their wallet inbox.
Use all channels (twitter, bitcointalk, facebook, email, etc).    Examples:
image: http://altsheets.ddns.net/img/HZ-PM.png     in a tweet like this:
   All #AAssetHZ shareholders got a personal, encrypted message.
   Check your wallet --> transactions --> 7/10/2015 21:xx
   https://twitter.com/AAssetHZ/status/619592923101941760
Check your own wallet NHZ-VJ23-6K9N-33Z2-4DHQV ('[u'BeautifulIssuer', u'altsheetstestaccount03', '']')
for incoming answers in the next days !

Please give me feedback how this works out for you. Thanks!
Also: Consider to buy my 'AAssetHZ' or 'AAssetNXT' to support me, and to earn dividends.

Enjoy your day!

[02:50:47.776]  end.

This is the whole program output. The transactions are real. They are already on the HZ block chain.

Contact me to book this service!

Next: Preparing the real newsletter.
Exclusive to my AAssetHZ/NXT shareholders.

 Smiley



EDIT: Same test on NXT chain with NXT testasset - successful too.
legendary
Activity: 902
Merit: 1001
Free trial of #AltFolio = save time, react faster

#NxtHacks 2015 winner:

1st: @AltSheets - with #AssetGraphs.py

The poll entries were scored on four categories,
Completeness, Style, Use of API, and Usefulness.

Final Scores for the hackathon:

ALTSHEETS - 27.11
5.85 Completeness
7.38 Style
7.50 Use of API
6.38 Usefulness

all results at: NxtHacks thread.

Retweet ;-)

_____________________________________________________________
legendary
Activity: 902
Merit: 1001
Free trial of #AltFolio = save time, react faster
AssetGraphs.py is born!

Two new threads related to my nxthacks participation

"AssetGraphs.py is born!" explains backgrounds, and paints possible futures for my project.

"AssetGraphs to Open Source - help me design a new asset" does what it says  ;-)

Thanks!
legendary
Activity: 902
Merit: 1001
Free trial of #AltFolio = save time, react faster
nxthacks 2015: assetgraphs.py is born!


An unforgettable weekend: I survived my 1st hackathon :-)

Out of the 48hours, I slept 2 times only 4, and was coding > 24 hours:

  • 1052 lines of Python:
    api.py = 1 completely new module for abstracted access to the nxt API in python.
    api_testing.py = accessing & testing the above; generating the Top44 of issuers, etc.
    network.py = 1 completely new module for getting, selecting, formatting API results and transforming them into a network structure.
    I used none of my existing modules, but built everything anew. (import urllib2, urllib, json, pprint, logging, time, threading, random, threading, pickle)

  • ... which created the 9 network.json files as an input for ...

  • a JavaScript that I needed to understand & adapt (thx to d3 = a cool viz tool); plus
    9 webpages to hold (stepwise adapted & extended) copies of that script, that went into ...

  • 11 webpages, 1 css & 1 navigation (adapted template from dreamweaver), and 1 screenshot,
    to then present the whole thing.

I finished and submitted ... 17 seconds before the countdown reached zero  Wink

When Jones then said the form stays open for latecomers, I executed my
spontaneous idea to hash all the Python code to later prove 'no changes'.

And shut down my computer. The following hours were pure enthusiasm.
I walked through the night moon forest at 5 a.m., actually singing out loud *lol*

And then I collapsed, I was so tired - I have only slept and recovered ever since.

I have had a quick look at the other 5 submitted projects. All cool, and useful!
Congrats to every participant! Wasn't that a one-of-a-kind experience?


And I have just discovered the voting. Great! -->

Code:

Your voice in the nxthacks 2015 - before height 495,997 cast your vote at poll 8316013305858322997:
NxtWallet --> Voting System --> [url=https://nxtportal.org/polls/8316013305858322997]Nxthacks Hackathon Voting[/url] --> Vote

I suggest to add that to your signature for 4 days? Thx!

You want to know what I have built? -->
Study my epic at altsheets.ddns.net/assetgraphs
.

Please vote for me: " AltSheets " - thanks.

Retweet if you like me :-)

legendary
Activity: 902
Merit: 1001
Free trial of #AltFolio = save time, react faster
Short overview for TweetPic:


New much improved version of
assetparser.py v31    --> 2020.fm/assetparser
changelog: ...

Sample output:  NXT assetparser.py
Code:
[03:51:30.118]  nxt:
[03:51:30.118]  API-downloading all assets ...
...
[03:51:51.493]  572 rows(assets), 42 columns(observables) with 18249 non-empty cells (table 76% filled)
[03:51:51.588]  ready. DONE.

Sample output  HZ assetparser.py
Code:
[04:41:26.289]  nhz:
[04:41:26.289]  API-downloading all assets ...
...
[04:41:54.063]  147 rows(assets), 42 columns(observables) with 4146 non-empty cells (table 67% filled)
[04:41:54.165]  ready. DONE.
...

Availability
Buy snapshot spreadsheet tables of the 2 whole asset markets analysis  ...
Buy snapshot rows of selected (e.g. of your own) assets: ...
Tell me what you are interested in, and make an offer how much this is worth to you.
...
Money talks
Inviting all ideas how to monetize this.
... read more interesting details now at     2020.fm/assetparser


.
legendary
Activity: 902
Merit: 1001
Free trial of #AltFolio = save time, react faster
New much improved version of
assetparser.py

changelog:

* asset holders, accounts:
** before only the workarounds for HZ were implemented, now all also works on NXT again
** funfacts accounts: number of asset positions, asset holding accounts
** HZ: pickle/unpickle all accounts (for faster debugging)

* assets:
** NXT: genesis account block time --> time calculations
** funfacts assets: simple asset shareholder analysis (mean median max, >10, >100, >1000)

* trades:
** Nxt version: sellers & buyers are given by API (faster & easier than HZ workaround of getting all order txs)
** HZ: extracted order ids can now also contain bidOrders, or freely choosable (good for 'shareholders.py')
** progress: show a "*" per downloaded asset
** funfacts: simple number-of-trades analysis (mean median max, >10, >100, >1000)
** analyzeAllTrades can easily handle 100k trades

* architecture:
** all asset-specific analysis is already or will go into shareholders.py
** most api calls now in an own module apiclient.py

* observables - what cannot be calculated for HZ now also include as empty columns, to allow easier platform mixing
* altprices.py - usd as a base, due to missing data
* logging - better and more consistent logging output


Future:

Open for suggestions.


Sample output:
NXT assetparser.py
Code:
[03:51:30.118]  nxt:

[03:51:30.118]  API-downloading all assets ...
[03:51:31.365]  API-downloading all assets: 572 assets. DONE.
[03:51:31.365]  pickling 'getAllAssets' API results to file, for later reuse ...
[03:51:31.500]  pickling 'getAllAssets' API results to file, for later reuse: DONE.

[03:51:31.500]  API-Downloading all accountIds which are holding the 572 assets (async, MAXTHREADS=1000) ...
[03:51:34.831]  API-Downloading all accountIds which are holding the 572 assets (async, MAXTHREADS=1000): 572 threads finished. DONE.
[03:51:34.849]  Funfacts: Mentioned accountIds: 37762. Unique accounts holding assets: 11872
[03:51:34.851]  Among the 412 assets with >1 shareholder (at least 1 more than the issuer) ...
[03:51:34.851]  ... number of shareholders: min=2 mean=91.3 median=11.5 max=4157
[03:51:34.851]  ... >10 shareholders: 213   >100 shareholders: 57   >1000 shareholders: 11
Code:
[03:51:34.869]  API-Downloading trades (async) of 572 assets
[03:51:34.934]  Progress: Each '*' represents one getTrades API-call:
                 * * * * ** *** **  ** ** *** * * ** * * * ** * * *** * * * *
                 * * * * * *** * ** *** ** ** *** ** ** * * ** ** * *** **  ***
                  * ** ***  ** ** ** ******  * *** **  * ****  ***** ** ** ** ******* *
                 ** * ** * * ** * ** ******* * * *  *** *** **** ***** *** * *   * **** ** **  **** ***   *  * ** * **
                ** ***  ** * **   * ****** **** ** * ** ** ** ******
                *** *  ****   * * *** ** *  
                ** ** * * ** ** *** * ** ** * ***
                  ** *  ** * * **** * ***  ** * * * ***  
                * * ** ** *  * * ** * * *** ** ** * *** **  ** ***
                 ** * ******* *** ** ***  **** *** * **  ** *  **
                 ** * ** * * * ** ***** * ** ** * * * * * * ** * ** ***
                 * ** * * * * * * * * * *
[03:51:41.230]  API-Downloading trades (async) of 572 assets: 397 threads finished. DONE.
[03:51:41.232]  From 397 assets with trades, a total of 109325 trades downloaded.
[03:51:41.233]  Funfacts: Among the 397 assets with trades ...
[03:51:41.233]  ... number of trades: min=1 mean=275.4 median=27.0 max=9046
[03:51:41.233]  ... >10 trades: 244   >100 trades: 116   >1000 trades: 30  
Code:
[03:51:41.233]  API downloading accounts of all asset issuers ...
[03:51:43.644]  API downloading accounts of all asset issuers: 572 threads. DONE.

[03:51:43.707]  Loaded price data. Most recent: NXT=0.00005647BTC  BTC=266.93USD (nearest btc/usd from: 07 Jul 2015 18:59:20 +0000)
[03:51:51.434]  Analyzing 572 assets with 109325 trades. DONE.

[03:51:51.434]  printing to file (nxt-assets_20150714-155151.csv) by redirecting stdout. ...
[03:51:51.477]  printing to file (nxt-assets_20150714-155151.csv) by redirecting stdout. Stdout redirected back. DONE.

[03:51:51.477]  analyzing output (nxt-assets_20150714-155151.csv):
[03:51:51.493]  572 rows(assets), 42 columns(observables) with 18249 non-empty cells (table 76% filled)

[03:51:51.588]  ready. DONE.

Sample output
HZ assetparser.py
This is more complicated, because the old API of HZ forced me to invent some clever work-arounds. But then it results in almost the same information:

Code:
[04:41:26.289]  nhz:

[04:41:26.289]  API-downloading all assets ...
[04:41:27.345]  API-downloading all assets: 147 assets. DONE.
[04:41:27.345]  pickling 'getAllAssets' API results to file, for later reuse ...
[04:41:27.384]  pickling 'getAllAssets' API results to file, for later reuse: DONE.

[04:41:27.385]  B.E.-API-downloading all account ids (from NHZ block explorer) ...
[04:41:29.595]  B.E.-API-downloading all account ids (from NHZ block explorer): 4902 accounts. DONE.
[04:41:29.595]  API-Downloading 4902 accounts (async, MAXTHREADS=1000) ...
[04:41:44.983]  API-Downloading 4902 accounts (async, MAXTHREADS=1000): 4902 threads finished. DONE.
[04:41:44.993]  pickling 'allAccounts' API results to file, for later reuse ...
[04:41:46.174]  pickling 'allAccounts' API results to file, for later reuse: DONE.
[04:41:46.190]  Funcfacts HZ: 2395 accounts are holding (median 230.0 mean 417535.7) HZ, and 752 are holding assets.
Code:
[04:41:46.190]  API-Downloading trades (async) of 147 assets
[04:41:46.265]  Progress: Each '*' represents one getTrades API-call:
                 * * * ** **** ** ** * * * * ** *** *** * * * ** ** ***   ***** **** * *
                *   *** ** ** * * * * *** **  *** * ***** *  **  *** ** * * ** * * * * * *
[04:41:47.607]  API-Downloading trades (async) of 147 assets: 90 threads finished. DONE.
[04:41:47.607]  From 90 assets with trades, a total of 2923 trades downloaded.
[04:41:47.607]  Funfacts Trades: Among the 90 assets with trades ...
[04:41:47.607]  ... number of trades: min=1 mean=32.5 median=5.0 max=611
[04:41:47.607]  ...   >10 trades: 29   >100 trades: 7

[04:41:47.607]  extracting all txIds from trades ...
[04:41:47.607]  extracting all txIds from trades: 461 trades with 2923 orders of type ('askOrder',): 1448 unique orderTxs. DONE.
[04:41:47.607]  API-Downloading 1448 Order transactions (async) ...
[04:41:52.288]  API-Downloading 1448 Order transactions (async): 1448 threads finished. DONE.
[04:41:52.289]  extracting sellers of trades from askOrder -transactions ...
[04:41:52.289]  extracting sellers of trades from askOrder -transactions: 2923 trades. DONE.
Code:
[04:41:52.289]  API downloading accounts of all asset issuers ...
[04:41:53.654]  API downloading accounts of all asset issuers: 147 threads. DONE.

[04:41:53.654]  Workaround for OLDAPI - go through all accounts, to collect asset holders ...
[04:41:53.763]  Analyzed 752 shareholders, with 1409 asset balances.
[04:41:53.763]  Workaround for OLDAPI - go through all accounts, to collect asset holders: DONE.
[04:41:53.763]  Funfacts Assets: Among the 87 assets with >1 shareholder (at least 1 more than the issuer) ...
[04:41:53.763]  ... number of shareholders: min=2 mean=15.5 median=4.0 max=310
[04:41:53.763]  ... >10 shareholders: 18   >100 shareholders: 3   >1000 shareholders: 0

[04:41:53.852]  Loaded price data. Most recent: HZ=0.00000092BTC  BTC=266.93USD (nearest btc/usd from: 07 Jul 2015 18:59:20 +0000)
[04:41:54.029]  Analyzing 147 assets with 2923 trades. DONE.

[04:41:54.029]  printing to file (nhz-assets_20150714-164154.csv) by redirecting stdout. ...
[04:41:54.046]  printing to file (nhz-assets_20150714-164154.csv) by redirecting stdout. Stdout redirected back. DONE.
[04:41:54.046]  analyzing output (nhz-assets_20150714-164154.csv):
[04:41:54.063]  147 rows(assets), 42 columns(observables) with 4146 non-empty cells (table 67% filled)

[04:41:54.165]  ready. DONE.

Open for suggestions.


Availability
For now:
... an earlybird approach - you could have this TODAY!
* How much would you pay for (private) access to the current static results table? With an option for 3 data updates later.
* How much would you pay for providing all static results (publicly) on your website?

For your own (private!) detailed analysis ...

Buy snapshot spreadsheet tables of the 2 whole asset markets analysis, of these sizes:
* HZ: 147 rows(assets), 42 columns(observables) with 4146 non-empty cells (table 67% filled)
* NXT: 572 rows(assets), 42 columns(observables) with 18249 non-empty cells (table 76% filled)

Buy snapshot rows of selected (e.g. of your own) assets:
* 1 row(asset) with 42 columns(observables)

Tell me what you are interested in, and make an offer how much this is worth to you.


Money talks

Inviting all ideas how to monetize this in the future.

If you already found this interesting, informative, inspiring ... consider to GIVEBACK.

Thanks!
legendary
Activity: 902
Merit: 1001
Free trial of #AltFolio = save time, react faster
Lootz from supernetradio (my 1 hour interview about AltFolio is online on soundcloud),
and me chatted a bit about AltFolio, and shareholders.py, and assetparser.py, in a slack.

Here is a transcript (without all the uploaded pictures).

 Smiley
legendary
Activity: 902
Merit: 1001
Free trial of #AltFolio = save time, react faster
Shareholders.py is born
...

This tool is interesting for every
Asset issuer:
Do you want to buy this service from me?

PM me an offer.


... it doesn't have a GUI yet, and so far can be run only by me. But could already be booked as a service, actually.

Though, only for experienced users/admins, no newbie support (or yes - if you pay well & upfront).
Makes most sense if you have a web server where you can password-protect an area /shareholders/innercircle

More info above in these FIVE consecutive posts, and on my webpage.

legendary
Activity: 902
Merit: 1001
Free trial of #AltFolio = save time, react faster
I don't know, I would like it best if it would be just integrated into the wallet.
Yes, I know.

That makes sense.

In Nxt there is / will soon be a paid plugins system.


Do you have any ideas for investigation?
Well, what you can always do is "follow the money", i.e. when he moves his funds somewhere else, to traverse the blockchain, hopping from one account to the next one. That way you can try to find out as much as you can.  That is mainly done manually, because you need to assess the situation with your intelligence, and your own pattern recognition system.


Does your program function in NXT also?
It does, indeed.
... with a bit of extra coding, no problem - it would run on Nxt, for sure.

NXT is a better market.
It is a bigger market.
Well, bigger and better is if you make it useable for both.

Agreed.

I am happy that my program runs not only on one platform.

full member
Activity: 180
Merit: 100
But it can become a product on its own.
For that, I will have to research local tx signing (to protect the sender's private key from me)
- and sourcecode protection! And perhaps GUI programming even. Or make it a webservice?

I don't know, I would like it best if it would be just integrated into the wallet. Maybe you should join the HZ team. I would also like functions/ideas of your other programs integrated into the HZ wallet. But these are just thoughts and wishes, I don't know what is possible and what you are willing to do. (And I don't really have to know it.)

I am actually considering to hard-code the restriction that an asset issuer can only send these messages to the shareholders of his own asset. That would -in one easy decision- render many abuse cases impossible.

And some use cases, too.

GlideSec. aha. To me, that thing looked fishy, from day one.  

Or at least like something that I want to stay away from. If someone promises superhigh returns without risks, he is either a genius, or a liar / scammer - or scamming other people to get their money, to then distribute it to its own crownies. Myself, I do not want to be part of such schemes. But perhaps I am wrong, and loosing out on a lot of lucrative opportunities?

As an honest person, you always loose all bad and illegal opportunities. Robbing is easier than sowing, harvesting and working. But the good way is the stony way...  Wink

My involvement in GlideSec was only short, I was just starting and testing, as the only way in cryptos seems to test it for myself, as many people talk a lot of contradictory things here and I don't know what I should believe. So, I just received my first (and only) dividend, calculated it and it looked great, so I bought some more shares. Then suddenly (for me) there was this idea with the GlideCoin (completely unnessesary for me) and everything stopped.

So ... what if it is not fraud?
Perhaps it is just an angry mob - which is unhappy about their disappointed expectations to get rich immediately?

The developer/asset issuer could explain himself to calm the 'mob', but he didn't, instead he made false promises or gave no information at all (and seems to have left, nobody knows). If it is no scam, it is a very bad and deceiving behavior. But it's likely scam or he changed his mind and took everything he could get out of it, and left.

However, once the case is 100% clear, and decided beyond any doubts

This might never be 100% clear. Only the developer or some 'detective work' could clear it up.

come back to me. Then ideally with an already collected crowdfunded bounty, to pay me. Not much, but worth my work.

Well, the only thing I did so far was looking at the shareholder distribution. I don't know if more will be necessary or promising. We'll see if there are any more ideas. Personally, I did not loose too much money to put more into it, but I would like to help and to prevent such cases. And to get an explanation (and maybe my money back and/or some punishment for the scammer, if he is one). But maybe some big investors could be willing to put some money into investigation of the case. Do you have any ideas for investigation? Does your software help there?

Does your program function in NXT also?
It does, indeed.

This last function at the moment yet only in HZ, because I have been focussing on my own asset shareholders right now; but with a bit of extra coding, no problem - it would run on Nxt, for sure.

NXT is a better market.
It is a bigger market.

Well, bigger and better is if you make it useable for both.

So: Thx! Please inform me by PM me so that I can connect email & address. Thanks!

You should still have my email address. Additionally, I don't like to connect my wallet with my e-mail address. I know that HZ is not an anonymous cryptocurrency system, but anyway, for the moment I prefer to stay "semi-anonymous".
legendary
Activity: 902
Merit: 1001
Free trial of #AltFolio = save time, react faster
Shareholders.py ...
Sample message ...



This is how it looks to the recipient = shareholder.

Nice and useful idea.

Can it also be used by asset holders?

Of course, by anyone. It just needs a nonempty balance, and -right now unfortunately still- the private key of the sender.

It is still a quickNdirty script, which will not leave my machine in the current state, and can only be triggered by myself.

But it can become a product on its own.
For that, I will have to research local tx signing (to protect the sender's private key from me)
- and sourcecode protection! And perhaps GUI programming even. Or make it a webservice?


This would open interesting possibilities of use and abuse...
Exactly. Let us better not even go there ;-)

I am actually considering to hard-code the restriction that an asset issuer can only send these messages to the shareholders of his own asset. That would -in one easy decision- render many abuse cases impossible.

An example of a use would be the gathering, communication and coordination of defrauded users, as in this probable fraud case (but it's a NXT asset, where the function of listing all asset holders is easier than in current Horizon):

--> https://bitcointalksearch.org/topic/anyone-wants-to-do-something-about-glidesec-asset-and-glidecoin-issue-1044199 --> Interesting.

> "GlideSec Asset and GlideCoin issue (maybe Scam)?"
GlideSec. aha. To me, that thing looked fishy, from day one.  

Or at least like something that I want to stay away from. If someone promises superhigh returns without risks, he is either a genius, or a liar / scammer - or scamming other people to get their money, to then distribute it to its own crownies. Myself, I do not want to be part of such schemes. But perhaps I am wrong, and loosing out on a lot of lucrative opportunities?


(maybe Scam)
coordination of defrauded users, as in this probable fraud case

So ... what if it is not fraud?
Perhaps it is just an angry mob - which is unhappy about their disappointed expectations to get rich immediately?  

However, once the case is 100% clear, and decided beyond any doubts, come back to me. Then ideally with an already collected crowdfunded bounty, to pay me. Not much, but worth my work.

Does your program function in NXT also?
It does, indeed.

This last function at the moment yet only in HZ, because I have been focussing on my own asset shareholders right now; but with a bit of extra coding, no problem - it would run on Nxt, for sure.

NXT is a better market.
It is a bigger market.

(BTW thank you for the friendly password)

De nada. It is a thank you from me to my shareholders. Every shareholder got one from me.
Not everyone has answered back, though.

EDIT:
So: Thx! Please inform me by PM me so that I can connect email & address. Thanks!
Actually, I changed my mind about that. Why bother with unencrypted email if we can have encrypted messaging. If someone gives me an email address, of course I will use it - but I might not continue to explicitly ask for it.
Still, it would be nice to know for which of the addresses I can tick the box, so why not ... simply send me a HZ PM. Thanks.
full member
Activity: 180
Merit: 100
Shareholders.py ...
Sample message ...



This is how it looks to the recipient = shareholder.

Nice and useful idea.

Can it also be used by asset holders?

This would open interesting possibilities of use and abuse...

An example of a use would be the gathering, communication and coordination of defrauded users, as in this probable fraud case (but it's a NXT asset, where the function of listing all asset holders is easier than in current Horizon):

https://bitcointalksearch.org/topic/anyone-wants-to-do-something-about-glidesec-asset-and-glidecoin-issue-1044199

Does your program function in NXT also? NXT is a better market.

(BTW thank you for the friendly password)
legendary
Activity: 902
Merit: 1001
Free trial of #AltFolio = save time, react faster
Shareholders.py is born
...


This tool is interesting for every
Asset issuer:
Do you want to buy this service from me?

PM me an offer.


... it doesn't have a GUI yet, and so far can be run only by me. But could already be booked as a service, actually.

Though, only for experienced users/admins, no newbie support (or yes - if you pay well & upfront).
Makes most sense if you have a web server where you can password-protect an area /shareholders/innercircle

More info above in these FIVE consecutive posts, and on my webpage.
legendary
Activity: 902
Merit: 1001
Free trial of #AltFolio = save time, react faster
Announce it on twitter (example), facebook, bitcointalk ...


If you are a shareholder of my
AAssetHZ 8101260088962758269,
you received an encrypted message from me !

Please check your wallet for an "Arbitrary Message"
coming from my address.

Read the text by clicking on the transaction ID.



Click on the pic to the to my real posting.
legendary
Activity: 902
Merit: 1001
Free trial of #AltFolio = save time, react faster
Shareholders.py ...
Visit the new shareholder inner circle at
http://altsheets.ddns.net/shareholders
Your personal credentials are:
  username: ...
  password: ...

Webpage /shareholders, open for everyone

Clicking on inner circle ...

Wrong password --> unauthorized

Correct password --> access to protected area

A beautiful newsletter is waiting there ...


Cool, ain't it?
legendary
Activity: 902
Merit: 1001
Free trial of #AltFolio = save time, react faster
Shareholders.py ...
Sample message ...



This is how it looks to the recipient = shareholder.
legendary
Activity: 902
Merit: 1001
Free trial of #AltFolio = save time, react faster
Shareholders.py is born

I built a new tool in a crazy 17 hours session, to reach out to my 17 shareholders,
celebrating the 1 month birthday of AAssetHZ.

The following is the program output, it is self explaining.

(The asset 'beautiful' (id: 5903523947573024709) is a test asset that I have issued only for this purpose. Do not buy it.)



--------------------------------------------------
Sending messages to all shareholders of
'beautiful' (assetId = 5903523947573024709)
--------------------------------------------------
from sending account  NHZ-VJ23-6K9N-33Z2-4DHQV

THEREALDEAL = True

Step 1: Parsing the blockchain for all shareholders
[03:48:09.869]  nhz:
[03:48:10.901]  API-downloading all assets: 122 assets. DONE.
[03:48:12.897]  API-downloading all account ids from NHZ block explorer: 4525 accounts. DONE.
[03:48:30.819]  API-Downloading 4525 accounts (async, MAXTHREADS=1000): 4525 threads finished. DONE.
[03:48:30.848]  2124 accounts are holding (median 200.2 mean 470808.9) HZ, and 708 are holding assets.
[03:48:31.005]  Analyzing 708 shareholders, with 1308 asset balances. DONE.

Asset 5903523947573024709 has 4 shareholders: (asset, accountRS, amount, countOfDifferentAssets, HZ-balance, name, alias)
5903523947573024709   NHZ-YPPJ-5S6B-NKYK-B5FVX    0.0001   1       128.0                          altsheetstestaccount04
5903523947573024709   NHZ-4BHN-8FBZ-TVJS-DMGF6    3.7188   1         4.0                          altsheetstestaccount02
5903523947573024709   NHZ-VJ23-6K9N-33Z2-4DHQV   34.1394   1        35.0                          altsheetstestaccount03
5903523947573024709   NHZ-QEQG-G5N8-8ASD-FYHFR    4.1417   1         2.0                          altsheetstestaccount01

all addresses:
[u'NHZ-YPPJ-5S6B-NKYK-B5FVX', u'NHZ-4BHN-8FBZ-TVJS-DMGF6', u'NHZ-VJ23-6K9N-33Z2-4DHQV', u'NHZ-QEQG-G5N8-8ASD-FYHFR']

with public keys:
{u'NHZ-4BHN-8FBZ-TVJS-DMGF6': u'cfa2d418cb99f9740c37843262fae2ca27c3490c6f6d57dafd494ba748e1e71c', u'NHZ-YPPJ-5S6B-NKYK-B5FVX': u'83a16fee6e5b88e6fa6d9a7912b2882aadb361e22d6a3f5020c89b4e38a2c875', u'NHZ-VJ23-6K9N-33Z2-4DHQV': u'2f57ed957453207b926c8466944856d9e32f89142f327d9e25fb9dbf9788f512', u'NHZ-QEQG-G5N8-8ASD-FYHFR': u'63f26ee1f2389f5fe08da039644dde51fc02ac23419d51aa445f7900f00d0355'}


Step 2: Making passwords, compiling the messages from template, checking lengths.

Have a quick look on the passwords, so they are not obscene :-)
['5xepazwg', 'laqmaxcs', 'hw9kce6q', 'ou34fjiv']

Sample message
--------------------------------------------------

Hello shareholder!

You own shares of asset 'beautiful' (id 5903523947573024709).

Good news for you -->

Visit the new shareholder inner circle at
http://altsheets.ddns.net/shareholders

Your personal credentials are:
  username: NHZ-4BHN-8FBZ-TVJS-DMGF6
  password: 5xepazwg

Enjoy!
       your happy AltSheetsDev :-)

--------------------------------------------------


Step 3: Checking balance
The sending account NHZ-VJ23-6K9N-33Z2-4DHQV has a balance of 35.01 HZ.


Step 4: Sending encrypted messages
only continue here if you are totally sure:

Please type  yes  :yes

------------------
start sending. Please be patient:
NHZ-4BHN-8FBZ-TVJS-DMGF6  success=True txID=17542049851144901313
NHZ-YPPJ-5S6B-NKYK-B5FVX  success=True txID=17826415227643272475
NHZ-VJ23-6K9N-33Z2-4DHQV  success=True txID=7726216962759025843
NHZ-QEQG-G5N8-8ASD-FYHFR  success=True txID=6829710997944664049
ready.

Step 5: Linux commands to set the password for each shareholder. Do this now:
sudo htpasswd -b /path/to/your/.htpasswd NHZ-YPPJ-5S6B-NKYK-B5FVX laqmaxcs
sudo htpasswd -b /path/to/your/.htpasswd NHZ-4BHN-8FBZ-TVJS-DMGF6 5xepazwg
sudo htpasswd -b /path/to/your/.htpasswd NHZ-VJ23-6K9N-33Z2-4DHQV hw9kce6q
sudo htpasswd -b /path/to/your/.htpasswd NHZ-QEQG-G5N8-8ASD-FYHFR ou34fjiv

Step 6: Who enabled you to do this?
Please give a reward to AltSheetsDev now.
How much HZ you want to send? (0 to skip):  50000
Thanks. Sending now (please be patient):
donation success=False txID=Not enough funds

Step 7:
Test the webaccess, that it really works. Monitor the webserver logfiles if you can.
Use all ways to inform your shareholders, otherwise they might not open their wallet inbox.
(twitter, bitcointalk, facebook, etc) Example: http://altsheets.ddns.net/img/HZ-PM.png
Check your own wallet NHZ-VJ23-6K9N-33Z2-4DHQV for incoming answers.
Please give me feedback how this works out for you. Thanks!
Also: Consider to buy my 'AAssetHZ' to support me, and earn dividends.
Enjoy your day!

--------------------------------------------------



This tool is interesting for every
Asset issuer:
Do you want to buy this service from me?

PM me an offer.
legendary
Activity: 902
Merit: 1001
Free trial of #AltFolio = save time, react faster
extend it a little bit to show more information.
Thanks tyz, for your interest.

First of all: This is work in progress. And myself, I have not even really started to show the whole information - in the preview you see 12 columns, while the newest version already produces 43 columns, for each asset. Not all of them hyper-essential, but they are there now.

Have you released the source code somewhere?
No.

The thing is that I issued this asset myself, and with selling it, I have got some money from investors - who will want to get it back long-term, in the form of dividends. So I need to find solutions how all of my work can be monetized.

Releasing my working hours that went into AltFolio and assetparser as open source would for sure help the community - but not me nor my shareholders. 

As much as I personally like free flow of information and collaboration - I have to think about money, always. You see my dilemma?

I would like to use

And I would like you to use it. Happy that you ask.

Which way can we find to solve this?

tyz
legendary
Activity: 3346
Merit: 1530
Have you released the source code somewhere? Is it free to change? I would like to use and extend it a little bit to show more information.
Pages:
Jump to:
© 2020, Bitcointalksearch.org