//Write your own contracts here. Currently compiles using solc v0.4.15+commit.bbb8e64f. pragma solidity ^0.4.25; contract deCent{ uint userCount = 0; struct User { uint id; string name; uint[] peers; uint[] accounts; } mapping(uint => User) users; mapping(uint => uint) child2parent; struct jointAccount { uint id; mapping(uint => uint) balances; } uint currentAcc = 0; mapping(uint => jointAccount) accounts; function registerUser(uint user_id, string user_name) public { User storage user = users[user_id]; user.id = user_id; user.name = user_name; userCount += 1; } function createAccount(uint user_id1, uint user_id2,uint balance) public { User storage user1 = users[user_id1]; User storage user2 = users[user_id2]; accounts[currentAcc] = jointAccount({id: currentAcc}); accounts[currentAcc].balances[user_id1] = balance/2; accounts[currentAcc].balances[user_id2] = balance/2; user1.peers.push(user_id2); user1.accounts.push(currentAcc); user2.peers.push(user_id1); user2.accounts.push(currentAcc); currentAcc += 1; } uint[] queue; mapping(uint => bool) vis; function BFS(uint user_id1, uint user_id2) internal { for (uint i=0; i < userCount; i+=1) { vis[users[i].id] = false; } vis[user_id1] = true; queue.length = 0; queue.push(user_id1); bool flag = false; while(!flag) { uint id = queue[0]; delete queue[0]; for (i=0;i < users[id].peers.length; i+=1) { if (!vis[users[id].peers[i]]) { queue.push(users[id].peers[i]); child2parent[users[id].peers[i]] = id; } if (users[id].peers[i] == user_id2) { flag = true; break; } } } } function sendAmount(uint user_id1, uint user_id2, uint amount) public returns(uint){ BFS(user_id1,user_id2); uint temp = user_id2; while(temp != user_id1){ } } function closeAccount(uint user_id1, uint user_id2) public { User storage user1 = users[user_id1]; User storage user2 = users[user_id2]; for (uint i=0; i < user1.peers.length; i+= 1) { if (user1.peers[i] == user_id2) { delete user1.peers[i]; delete accounts[user1.accounts[i]]; delete user1.accounts[i]; break; } } for (i=0; i < user2.peers.length; i+= 1) { if (user2.peers[i] == user_id1) { delete user2.peers[i]; delete user2.accounts[i]; break; } } } }
0.4.25