To create a Tendermint Private LAN BlockChain and access it - android

I am working on a review submission project on Tendermint in Windows.
I want to submit a tamper-proof review about a organisation and hence want to create a private block-chain network with no validators and say 5 users, who submit their review via android app through abci-cli to the private blockchain.
Can anyone guide me how to proceed with this. I am new to this whole topic and very confused about where to start.
I got this How to create a Tendermint local network with same ip
but want to run say 5 user accounts from different mobiles and Tendermint on 1 laptop(to create Blockchain). What I want to build is possible?
Any help is appreciated.

First of all, if you want to create a tamper-proof review system, you'll need as many validators as you can have, not just one. You need them because it's straightforward to hack one validator and exploit your system. But if you have many validators, it's not so easy (given they are independent - different data centers, racks, ..). The whole power of blockchains emerges from having a large number of separate machines which can't easily be hacked.
Second, you can have as many users as you want (of course, there is an upper limit on how many txs per second Tendermint can process).
Third, it's better if you use native Android API to send transactions. Tendermint has 3 HTTP endpoints for transactions (https://tendermint.github.io/slate/#broadcasttxsync).

Related

Best method to store and read data from a cloud source in Android?

The situation: I have many real life locations with specific information associated with them, and updated frequently. I am unsure of how to store this information for use in an android application.
My original thought was storing the data on some server/cloud source/database, reading from the server from each Activity in the app to make sure the info is up to date, and update the server with any changes that may or may not have been made.
For example: there are 200 people inside the library, one person leaves.
So we would read the number of people from the server, display this on the app, person leaves, subtract one, send the new number back to the server.
Would this be an incorrect approach? I'm fairly new to Android in general, and I really have no experience on how to approach this type of situation, what services to use, etc.
I would look into using Parse, its a pretty sweet way to power the backend, and their website is very detailed in explaining how to use it.

Collaborative notepad app for android

i want to develop a notepad alike app where initially all those who subscribed my pad can get my contents synchronized in real time but they can't edit my pad's contents and later on i want to give collaborative write access to every client.
There are so many references regarding sync between dropbox with phone or within yours multiple devices but didn't find anything useful.
EXAMPLE: Etherpad for desktop but mine is for android.
(Q1) How can client subscribe my pad.
(Q2) How can i setup a server which once get my pad's content will automatically broadcast to all the clients.
(Q3) How can i control conflicts for multiple write access between clients.
Please give some references to start with..thanks
About Q1 and Q2 it will depend on the tool you choose for the server. But it will end being a socket. I recommend reading this http://docs.oracle.com/javase/tutorial/networking/sockets/
About Q3, you will have to create a policy for this. One aproach is doing like Google Docs: keep the cursor location on server and broadcast to all clients, when another client changes the place your cursor is, your cursor changes along the change (remove or add text)

iOS/android hybrid app distribution/architecture model help or advice please

I am pretty new to the mobile end of development so forgive my naivety.
I would like to know if it's possible to have a structure/distribution model like the following:
Master App (has many "middle-man" instances)
!
!
Middle-man ( can customize data, look & feel, via web app and redistribute)
(has many end user viewers)
!
!
!
End User viewers( can download and install middle-man abc's app with middle-man's custom info)
Is this possible? I have searched around for quite a bit but perhaps I am searching the wrong terms?
I was thinking perhaps a couple options, let me know if it's sounds wrong.
Option 1 - Middle-man provides a special key code and end user types it in after installing the app to unlock it thereby storing the unique middle-man ID and displaying only their custom info. User only needs to enter code once. relation is stored in mysql perhaps??
Option 2 - create a build of the master template for each middle-man and provide the binary/install link along with a customized ini file to load correct ID? Or something to that effect.
Any better options out there? Something that allows for upgrades/new features to be passed down to all the instances easily.
Will this type of thing have any problems with the apple store if multiple middle men decide they want it on the app store?
Maybe I'm making it more complex than needed and could just use a simple "require login" for each end-user and the end user is tied to that middle man some how?
\The app could also be android app depending on middle-man requirements
Thanks in advance for any advice or links to helpful info.
If i had understood your question right, its a straight forward mobile app tied up with the backend.
User credentials for the middleman which shall associate with your
special key code.
Associate your actors(users) with roles and permission over accessing
content in the backend.
Your mobile app will pull the content only associated for the logged
in user.
Apart from this, you can store the content for offline etc.. Take phonegap approach and it pretty much does what you wanted to do.

How to pair random clients with each other?

I'm making a client/server game app for android. Currently I managed to get the app working using two locally known IPs. My issue now is how do I go about making my app pair client/servers randomly.
I was thinking that initially every person starts as a client and they connect to a master server. The master server then pairs them together and specifies who will be the server and who will be the client between the two. If this is the best way to do it, how do I go about making the master server program? What kind of server do I set it up on? I'm in the dark about how to go with this.
actually i did not answer right away thinking i would waste the night in needless fear but let us - if you don't mind - bump the issue up the hill - given just now i am going clickety-click looking for places to put up my first app - i found 2-3
let us examine the chance to do conceptual work on what is called stochastic List
given a large dataset = available apps
and another large dataset = people looking for apps
how would we code a fair presentation algorithm as some numbers like 100,000 are not out of scope but we get the same 10-20 apps on many keyclicks & not get much done - thus:
class Customer{}
class Application{}
Map <BigInteger,Customer>
Map <BigInteger,Application>
then we look into SecureRandom to pull from the application base ....
lot of work to be done but major point is to use SecureRandom rather than Math.random for several reasons ..

Is there a way to track how many users open your app(hourly,daily,etc)?

So does anyone know if there is a program that will allow me to track how many times my app is opened daily?
I'm not looking to track the users behavior or anything, I just what stats on the average use of my app.
To know this you need to send information to a server somehow. On the device you would need some kind of library or code that posts this information. On the server you need some service that receives it.
There's a number of tools that let you do that. Analytics tools for example: http://code.google.com/mobile/analytics/docs/
If you don't want to use a pre-made tool you could simply use an HttpClient and you could make a simple Servlet on the server that dumps the use count into a database.
Tow more details:
1- Make sure you ask the user for permission the first time he runs your app. This could be problematic for him because of privacy and bandwith.
2- I would batch this and send it to the server once per day (midnight).
I hope this helps.
Emmanuel
If want something easy to implement, you can use http://www.localytics.com/ I've used it for a couple of apps and it works really well.

Categories

Resources