Making Private Transactions on the ethereum network - hash

I've been working on a mechanism to make private transactions achievable on the ethereum network using zk-snarks and verifiable hashes.
I took alot of help from an existing work done on this mechanism. below is the link.
https://github.com/EYBlockchain/nightfall
Right now all this is functional on a local chain but when i move it to the geth network, transaction fails.
Any help on how to configure the above mechanism on etheruem network or a test network like rinkeby or ropsten will be highly appreciated.

Related

Beckhoff CP6606 communication

I have a client who wants to connect a CP6606 to a SCADA-server on a BACnet/IP network.
In short, this CP6606 is controlling an automatic waste collecting system, and now the customer wants to have all alarms and so on sent up to this SCADA-system which acts as a central operation unit.
Do we need a gateway, or can this be done from TwinCAT?
How to proceed?
Not sure I can help much, but I know that we can a vendor using TwinCAT via a Beckhoff PLC, and they seemed to need to write their own BACnet gateway (- but I'd probably recommend one that is already available & tested - be it one that might be provided via TwinCAT, or a piece of hardware that can already do it for you - if TwinCAT doesn't provided such an offering).

Need help in validating suggesting the design for a poker game

I'm developing fully decentralized poker game. At the moment my current design is I'm using pub/sub, push/pull sockets using the nano sockets to establish the communication.
Players push the data using nn_push socket type, dealer receives the data using nn_pull socket type, Once the dealer receives the data it processes it and publish the data using nn_pub and all the players in the game receive the data using nn_sub socket type.
Everything working fine so far, the only constraint here I see is my player nodes should know the IP of the dealer and this should be static in order to have this socket communications to work.
And also the players backend is connected from the GUI using libwebsockets for this I need static IP for my backend nodes too.
To summarize, I ended up in a situation where my dealer and playing nodes needs to have the static IP. I'm reading about dht protocols but not sure if those p2p protocols really be applicable in the context of pub/sub model.
Any inputs on how I avoid dependency on using static IP's is greatly helpful.
Thank you.
I suggest you use LSD and DHT both. LSD is really good for local neighbor nodes, and DHT can do what you want as you describe above. What's more, if you want to use a tracker, that may be much easier than use DHT, since you need to consider more about NAT Traversal if using DHT.

Simplest server to server authentication

I have microservice on a new server/vps that will only ever be called via REST by monolith app to perform some heavy lifting and then post the operation results back to the monolith in few minutes.
How should I protect these two endpoints? I think my main goal, for now, is just preventing someone that found servers address to be able to do anything.
Almost every solution I google seems like overkill/premature optimization.
Is it sufficient that I generate random long token once on each machine and then just pass it to headers and check it's presence on the other end?
Do I even need to SSL this? As far as I understand we need SSL encryption for clients that are trying to send sensitive data via wireless or unsafe shared networks.
What are the chances(is it even possible?) that somebody is gonna eavesdrop between two digitalocean vps's sending data via http? Did it ever happen before ?
Q: Is it sufficient that I generate random long token once on each machine and then just pass it to headers and check it's presence on the other end?
A: Generally microservices are behind a GateKeeper/Gateway(nginx,haproxy) so you can expose the endpoints you want. In your case I would recommend to create a private network between the two vps's and expose your microservice on that internal IP.
Q: Do I even need to SSL this? As far as I understand we need SSL encryption for clients that are trying to send sensitive data via wireless or unsafe shared networks.
A: No. If you use internal networks and don't expose to the public then there is no need for SSL/TLS. If you would do something with Tier 3/4 then you would need encryption for cross datacenter communication.
Q: What are the chances(is it even possible?) that somebody is gonna eavesdrop between two digitalocean vps's sending data via http? Did it ever happen before ?
A: There are bots that scan for open ports on servers/computers and try to penetrate them with exploits. In all cases always use a firewall like UFW/firewalld.
So let's say you have two servers with these microservices using the internal private network from your favorite provider:
VPS1 (ip = 10.0.1.50)
FooBarService:1337
BarFooService:7331
VPS2 (ip = 10.0.1.51)
AnotherMicroService:9999
Now both VPS's can access each other's services by simply calling the ip + port.
Good luck.
There's a few simple solutions you could use to authenticate both servers back and forth. The one I would recommend if you want to keep it simple, as you say, is Basic Auth. As long as you're utilizing that over an SSL/HTTPS connection, it suffices as a super simple way to authenticate each end.
You state it is your main goal to protect these endpoints, but then ask if SSL/HTTP is even needed. If these servers are vulnerable to the web in any way, then I would say yes, your endpoints need to be protected, and if you're transmitting sensitive data, then you need to be sending it through a secure stream.
If you believe the data you're sending is not very sensitive, and is likely that no one that knows these two endpoints will even know how to properly manipulate your data by sending fake requests, then sure, you don't need any of this, but then you assume the risk and responsibility for if and when it ever is exposed. Basic Auth is super easy, and with LetsEncrypt it's incredibly easy to obtain an SSL certificate for free. It's good experience, so may as well try it out and protect these endpoints and ensure that they're safe.

how high frequency trading system connects to exchange

I'm trying to study about high frequency trading systems. Whats the mechanism that HFT use to connect with the exchange and whats the procedure (does it has to go through a broker or is it direct access, if it's direct access what sort of connection information that i require)
Thanks in advance for your answers.
Understand that there are two different "connections" in an HFT engine. The first is the connection to a market data source. The second is to a clearing resource. As mentioned in kpavlov's answer, a very expensive COLO (co-location) is needed to get as close to the data source/target as possible. Depending on their nominal latency these COLO resources cost thousands of dollars per month.
With both connections, your trading engine must be certified by the provider (ICE, CME, etc) to comply with their requirements. With CME the certification process is automated, with ICE it employs human review. In any case, the certification requires that your software demonstrate conformance to standards and freedom from undesirable network side effects.
You must also subscribe to your data source(s) and clearing service, neither is inexpensive and pricing varies over a pretty wide range. During the subscription process you'll gain access to the service providers technical data specification(s)-- a critical part of designing your trading engine. Using old data that you find on the Internet for design purposes is a recipe for problems later. Subscription also gets you access to the provider(s) test sites. It is on these test sites that you test and debug your engine.
After you think you engine is ready for deployment you begin connecting to the data/clearing production servers. This connection will get you into a place of shadows-- port roulette. Not every port at the provider's network edge has the same latency. Here you'll learn that you can have the shortest latency yet seldom have orders filled first. Traditional load balancing does little to help this and CME has begun deployment of FPGA-based systems to ensure correct temporal sequencing of inbound orders, but it's still early in its deployment process.
Once you're running you then get to learn that mistakes can be very expensive. If you place an order prior to a market pre-open event the order is automatically rejected. Do it too often and the clearing provider will charge you a very stiff penalty. Other things can also get you penalized or even kicked-off the service if your systems are determined to be implementing strategies to block others from access, etc.
All the major exchanges web sites have links to public data and educational resources to help decide if HFT is "for you" and how to go about it.
It usually requires an approval from exchange to grant access from outside. They protect their servers by firewalls so your server/network need to be authorized to access.
Special certification procedure with technician (by phone) is usually required before they authorize you.
Most liquidity providers use FIX protocol or custom APIs. You may consider starting implementing your connector with QuickFix, but it may become a bottleneck later, when your traffic will grow.
Information you need to access by FIX is:
Server IP
Server port
FIX protocol credentials:
SenderCompID
TargetCompID
Username
Password
Other fields

How to reliably get outgoing masking of IP address?

How can I quickly and reliably mask my outgoing IP for doing many web requests?
Tor is too slow. It takes 10x longer.
Tor Tunnel did not work at all for me http://www.thoughtcrime.org/software/tortunnel/
CPAN WWW::FreeProxyListsCom.pm is failing cpan build tests.
CPAN WWW::FreeProxy is not returned any results
CPAN HTTP::ProxySelector is not returning any results
Can someone give some good advice on this? What is the best way to proceed?
Disclaimer :
I am working on collecting data from a gov. website that is actively blocking connections. This data is for the public good and the web admins are not doing the public service to provide the information. This is not a shady project but for the public service.
you can inspect my code so far here
https://code.launchpad.net/~jamesmikedupont/aspxezxs/aspxtraktor
any help with this would be appreciated, also people who would like to donate some CPU/BW.