Is it possible to hide certain corda nodes from others in the network? - kotlin

I am trying to develop a corda network in which the use case requires nodes to only see a specific set of other nodes. Can a nodes 'list of peers' be defined when introducing it to the network so that it cannot make transactions with another nodes or even see the other entities in the network.
I.e. In a network of 4 nodes (A,B,C,D) can A's peers be set to be only C & D and B's peers be set to C & D, whereas C and D can see all the nodes as normal. The goal would be to hide A from B in this case (and vice versa).

Hiding peers on a Corda Network from one another is not possible at this time. All nodes are intended to be visible with established identities.
The existence of an identity on a Corda Network does not reveal any information beyond the operation of a Cordapp by that legal entity. Transactions between parties on a network are hidden from all other parties on the network.
You can establish Business Networks which define a subset of nodes who do business together. The members of a Business Network are only able to be communicated with by other members of the same network. More information can be found here: https://solutions.corda.net/business-networks/intro.html

Related

Do redis streams scale when creating a new stream per client

I am attempting to create a microservice where clients are connected to a certain service A over a TCP connection and a variety of actions are performed on other services within the microservice system (say B, C, D etc.) based on user interaction or other events, and I need to propagate results from these services B, C, D back to service A to be returned to the client.
Since many of these services perform long lived actions, is using redis streams as a buffer to store results from B, C, D to then be propagated to the client by A make sense? Considering a new different redis key is used for each client, will this scale well for thousands of connections? Is redis the right choice for event propagation on a 1:1 basis like this?
Kafka seems like a bad choice because all consumers are delivered every single message. Does it make sense to use something like ActiveMQ instead?

What is a BNO(Business Network Operator) in Corda?

I am new to this.Could you please help me in understanding the concept in simple words?
Corda Network involves a variety of machines and resources that need to be sized, deployed (on cloud or premise), architected, tested, managed and monitored to insure the stability and communication of the various participants in the Network.
From Corda documentation:
The Business Network Operator is responsible for the infrastructure of the business network, they maintain the network map and identity services that allow parties to communicate, and - in many deployments - also operate the notary service.

How to prevent fake data from being sent to a Blockchain

I am developing a blockchain for IoT applications, where there are a number of gateways (miners) spread throughout the city and several nodes (sensors) connected to each of them. Each gateway can be added by an end user so this is a untrusted environment. How can I make sure that there isn't fake data being sent to the chain by one of the miners?
I have looked up some consensus protocols by find that none fit this specific problem since there is no value being exchanged.
Every miners sends a ping to a master server and receives from it the list of miners on the network. Then they connect to each other by p2p.
Any ideas of how could I solve this?
Blockchain can be used in both cases permission-less or permissionned, if you want to prevent that anyone can broadcast data, then you have to authenticate the nodes before they can join the network. If even after authenticating the nodes there is a chance that an authenticated node send "fake data" then a trust mechanism must be implemented, nodes verify the trustworthiness of the data's source and decide if the node is trusted and accept the data or not.
In order to prevent spamming or fake data being posted, it has to be added as a consensus rule to the protocol. Otherwise, it requires another layer that validates data based on off-chain data (but doesn't prevent data from being stored in blocks). Blockchain is for achieving distributed consensus, in a permission-less system. Restricting who can participate is not a permission-less system, and would be a centralized system because someone has to determine who is allowed to participate.
The answer to the query lies in Blockchain Oracles.
Oracles to-date are centralized services, meaning any smart contract using such services has a single point of failure, which nullifies any benefits gained from the decentralized nature of smart contracts.
To fill this gap, Chainlink was developed as the first decentralized oracle that can provide external data to smart contracts. As a result, the security and determinism of smart contracts can be combined with the knowledge and breadth of real-world external events. Chainlink will provide a smart contract with access to any external API needed.
As according to chainlink here and here
Blockchains and smart contracts cannot access data from outside of
their network. In order to know what to do, a smart contract often
needs access to information from the outside world that is relevant to
the contractual agreement, in the form of electronic data, also
referred to as oracles. These oracles are services that send and
verify real world occurrences and submit this information to smart
contracts, triggering state changes on the blockchain.

Peers vs Members - Consul

Peer set - The peer set is the set of all members participating in log replication. For Consul's purposes, all server nodes are in the peer set of the local datacenter.
~ Quote from Official docs
What is the difference between peers and members then?
Why do we have following two APIs then? (one is enough?)
i. /status/peers
ii. /agent/members
Could you please shed light on the internal details?
Is there a possibility of inconsistency in results of above APIs?
Here is a comparison of /agent/members/, status/peers/ and catalog/nodes.
The possible difference in response is because each of the API end point get data from different sources.
/catalog/nodes: The request recieved by any agent is redirected to the leader, and leader provides the response from catalog.
/agent/members/: Agent receives the request and return member information obtained from gossip. This can be different from catalog end point (as obvious from log replication mechanism (Consul uses Raft Prorocol) ).
/status/peers/ : This API return the nodes participating in 'log replication'.
Ideally, this should be same as /catalog/node. But if there is a partition in the cluster, it is possible that, until the cluster recover, all members are not taking part in log replication. In this case /catalog/nodes/ and /status/peers/ can give different results.
To understand this proper, you need to know the raft protocol properly. Reference.

What does TE and NT actually mean

I use a PBX with a Sangoma card, specifically the A500. Below is the link for the product
http://www.sangoma.com/products/a500-2-24-port-scalable-st-bri/
On the link you have a demo, which breaks down the components and explains them nicely. One things it also shows (specifically on step 3), is that the BRI module can be inserted either way, however one way is for TE and the other for NT.
I understand that TE stands for Termination equipment and that NT stands for Network Termination. But cannot seem to find any decent information that actually tells me what each of these mean and the difference between them. Could someone point me to a site or resource with this info, or explain it simply for me if you know the answer.
ISDN BRI defines different points or interfaces along the link between the telephone exchange and the end equipment in, for example, your home.
At the user equipment end, ISDN also distinguishes between different types of 'Terminal Equipment' - for example TE1 refers to specialised ISDN terminals and TE2 to 'standard' phones.
At the interface point between the line from the telephone exchange, and the local ISDN Terminal Equipment in your home, the Network Termination (NT) provides the functionality to interface between the 2 wire connection from the telephone exchange (i.e. the 2 wires that come in to your home) and the 4 wires connections to ISDN Terminal Equipment (e.g. the 4 wire connection that you plug into your ISDN phone).
Some good links to give some background:
http://homepages.uel.ac.uk/u0113650/ISDNBASIC.htm
http://docwiki.cisco.com/wiki/Integrated_Services_Digital_Network
http://www.networkmuseum.net/2011/07/isdn-bri.html