2

I created a struct as follows:

struct Node{            //   each node models each device on the network
    address nodeAdress; //   adress of the node
    uint trustValue;    //   trust value assigned to the node
    uint perCentMalware;//   percent probability calculated at the node
}

Then I declared an array Node[] allNodes;.

I have a function addNewNode() in my contract.

function addNewNode(address newNodeAdress) public returns(uint)
{
    addressToIndex[newNodeAdress] = allNodes.length;   //  newNodeAdress added to map
    return allNodes.push(Node(newNodeAdress,50,200));  //  nodes with default values
}

This is the result obtained while testing the code:

contractInstance.addNewNode.call(0x21f2118a4c7c5fda33d22faa1e2497211e69e935)
{ [String: '1'] s: 1, e: 0, c: [ 1 ] } contractInstance.addNewNode.call(0xfb075f799ba2b86599f93a73a34626ade8c237a6)
{ [String: '1'] s: 1, e: 0, c: [ 1 ] }

As it can be observed clearly, I called the addNewNode() function two times, but the return value,i.e., the allNodes.length value remains the same 1. Why is it so? Is there any conceptual misunderstanding here?

1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.