tendermint ABCI app
Test this app with command below
TENDERMINT_ADDRESS=http://localhost:45000 go test -v
get PubKey from pub_key.data in priv_validator.json
curl -s 'localhost:45000/broadcast_tx_commit?tx="val:PubKey"'
-
Go version >= 1.9.2
- Install Go by following installation instructions.
- Set GOPATH environment variable (https://github.com/golang/go/wiki/SettingGOPATH)
-
Tendermint 0.19.5
mkdir -p $GOPATH/src/github.com/tendermint cd $GOPATH/src/github.com/tendermint git clone https://github.com/tendermint/tendermint.git cd tendermint git checkout v0.19.5 make get_tools make get_vendor_deps make install
-
Get dependency (tendermint ABCI)
cd $GOPATH/src/github.com/ndidplatform/smart-contract/abci dep ensure
-
Create a directory for the project
mkdir -p $GOPATH/src/github.com/ndidplatform/smart-contract
-
Clone the project
git clone https://github.com/ndidplatform/smart-contract.git $GOPATH/src/github.com/ndidplatform/smart-contract
-
Run ABCI server
cd $GOPATH/src/github.com/ndidplatform/smart-contract DB_NAME=IdP_DB go run abci/server.go tcp://127.0.0.1:46000
-
Run tendermint
cd $GOPATH/src/github.com/ndidplatform/smart-contract tendermint --home ./config/tendermint/IdP unsafe_reset_all && tendermint --home ./config/tendermint/IdP node --consensus.create_empty_blocks=false
-
Run ABCI server
cd $GOPATH/src/github.com/ndidplatform/smart-contract DB_NAME=RP_DB go run abci/server.go tcp://127.0.0.1:46001
-
Run tendermint
cd $GOPATH/src/github.com/ndidplatform/smart-contract tendermint --home ./config/tendermint/RP unsafe_reset_all && tendermint --home ./config/tendermint/RP node --consensus.create_empty_blocks=false
-
Run ABCI server
cd $GOPATH/src/github.com/ndidplatform/smart-contract DB_NAME=AS_DB go run abci/server.go tcp://127.0.0.1:46001
-
Run tendermint
cd $GOPATH/src/github.com/ndidplatform/smart-contract tendermint --home ./config/tendermint/AS unsafe_reset_all && tendermint --home ./config/tendermint/AS node --consensus.create_empty_blocks=false
Required
- Docker CE Install docker
- docker-compose Install docker-compose
docker-compose -f docker/docker-compose.build.yml build
docker-compose -f docker/docker-compose.yml up
-
You must start IDP, RP and AS nodes in order to run the platform.
-
After starting BOTH nodes, please wait for
Commit Commit
to show in the first terminal (
go run abci ...
) of both processes before startingapi
processes. -
When IDP node and RP node run on separate machines, please edit
seeds
inconfig/tendermint/{RP or IdP}/config/config.toml
to match address of another machines.
Interact with api
in BASE64 format data.
functionName|parameter|nonce|base64(sign(param+nonce))|nodeID
functionName|parameter
{
"node_id": "NDID",
"public_key": "-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEA30i6deo6vqxPdoxA9pUpuBag/cVwEVWO8dds5QDfu/z957zxXUCY\nRxaiRWGAbOta4K5/7cxlsqI8fCvoSyAa/B7GTSc3vivK/GWUFP+sQ/Mj6C/fgw5p\nxK/+olBzfzLMDEOwFRbnYtPtbWozfvceq77fEReTUdBGRLak7twxLrRPNzIu/Gqv\nn5AR8urXyF4r143CgReGkXTTmOvHpHu98kCQSINFuwBB98RLFuWdVwkrHyzaGnym\nQu+0OR1Z+1MDIQ9WlViD1iaJhYKA6a0G0O4Nns6ISPYSh7W7fI31gWTgHUZN5iTk\nLb9t27DpW9G+DXryq+Pnl5c+z7es/7T34QIDAQAB\n-----END RSA PUBLIC KEY-----\n"
}
log: "success"
Posible role is RP,IdP and AS
{
"node_id": "IdP1",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwx9oT44DmDRiQJ1K0b9Q\nolEsrQ51hBUDq3oCKTffBikYenSUQNimVCsVBfNpKhZqpW56hH0mtgLbI7QgZGj9\ncNBMzSLMolltw0EerF0Ckz0Svvie1/oFJ1a0Cf4bdKKW6wRzL+aFVvelmNlLoSZX\noCpxUPQq7SMLoYEK1c+e3l3H0bfh6TAVt7APOQEFhXy9MRt83oVSAGW36gdNEksm\nz1WIT/C1XcHHVwCIJGSdZw5F6Y2gBjtiLsiFtpKfxQAPwBvDi7uS0PUdN7YQ/G69\nb0FgoE6qivDTqYfr80Y345Qe/qPGDvfne7oA8DIbRV+Kd5s4tFn/cC0Wd+jvrZJ7\njwIDAQAB\n-----END PUBLIC KEY-----\n",
"master_public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArdcKj/gAetVyg6Nn2lDi\nm/UJYQsQCav60EVbECm5EVT8WgnpzO+GrRyBtxqWUdtGar7d6orLh1RX1ikU7Yx2\nSA8Xlf+ZDaCELba/85Nb+IppLBdPywixgumoto9G9dDGSnPkHAlq5lXXA1eeUS7j\niU1lf37lwTZaO0COAuu8Vt9GcwYPh7SSf4/eXabQGbo/TMUVpXX1w5N1A07Qh5DG\nr/ZKzEE9/5bJJJRS635OA2T4gIY9XRWYiTxtiZz6AFCxP92Cjz/sNvSc/Cuvwi15\nycS4C35tjM8iT5djsRcR+MJeXyvurkaYgMGJTDIWub/A5oavVD3VwusZZNZvpDpD\nPwIDAQAB\n-----END PUBLIC KEY-----\n",
"node_name": "IdP Number 1 from ...",
"role": "IdP",
"max_ial": 3,
"max_aal": 3
}
log: "success"
{
"users": [
{
"hash_id": "���\u0010fV+�{��DD�F�;Hָ�`��椼q\u0017���",
"ial": 3
}
],
"node_id": "IdP1"
}
log: "success"
{
"accessor_id": "TestAccessorID",
"accessor_type": "TestAccessorType",
"accessor_key": "TestAccessorKey",
"commitment": "TestCommitment"
}
log: "success"
{
"service_id": "statement",
"node_id": "AS1",
"service_name": "Bank statement",
"min_ial": 1.1,
"min_aal": 1.2
}
log: "success"
{
"node_id": "IdP1",
"ip": "192.168.3.99",
"port": 8000
}
log: "success"
{
"request_id": "ef6f4c9c-818b-42b8-8904-3d97c4c520f6",
"min_idp": 1,
"min_aal": 1,
"min_ial": 1,
"timeout": 259200,
"data_request_list": null,
"message_hash": "hash('Please allow...')"
}
log: "success"
{
"request_id": "ef6f4c9c-818b-42b8-8904-3d97c4c520f6",
"aal": 3,
"ial": 3,
"status": "accept",
"signature": "signature",
"accessor_id": "TestAccessorID",
"identity_proof": "Magic"
}
log: "success"
{
"node_id": "AS1",
"request_id": "ef6f4c9c-818b-42b8-8904-3d97c4c520f6",
"signature": "sign(data,asKey)"
}
log: "success"
{
"node_id": "RP1",
"amount": 100
}
log: "success"
{
"node_id": "RP1",
"amount": 111.11
}
log: "success"
{
"node_id": "RP1",
"amount": 61.11
}
log: "success"
{
"func": "CreateRequest",
"price": 99.99
}
log: "success"
{
"requestId": "ef6f4c9c-818b-42b8-8904-3d97c4c520f6"
}
log: "success"
{
"requestId": "ef6f4c9c-818b-42b8-8904-3d97c4c11111"
}
log: "success"
{
"namespace": "CID",
"description": "Citizen ID"
}
log: "success"
{
"namespace": "Tel"
}
log: "success"
{
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArdcKj/gAetVyg6Nn2lDi\nm/UJYQsQCav60EVbECm5EVT8WgnpzO+GrRyBtxqWUdtGar7d6orLh1RX1ikU7Yx2\nSA8Xlf+ZDaCELba/85Nb+IppLBdPywixgumoto9G9dDGSnPkHAlq5lXXA1eeUS7j\niU1lf37lwTZaO0COAuu8Vt9GcwYPh7SSf4/eXabQGbo/TMUVpXX1w5N1A07Qh5DG\nr/ZKzEE9/5bJJJRS635OA2T4gIY9XRWYiTxtiZz6AFCxP92Cjz/sNvSc/Cuvwi15\nycS4C35tjM8iT5djsRcR+MJeXyvurkaYgMGJTDIWub/A5oavVD3VwusZZNZvpDpD\nPwIDAQAB\n-----END PUBLIC KEY-----\n",
"master_public_key": ""
}
log: "success"
{
"public_key": "5/6rEo7aQYq31J32higcxi3i8xp9MG/r5Ho5NemwZ+g=",
"power": 0
}
log: "success"
{
"node_id": "RP1"
}
{
"public_key": "-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEAwCB4UBzQcnd6GAzPgbt9j2idW23qKZrsvldPNifmOPLfLlMusv4E\ncyJf4L42/aQbTn1rVSu1blGkuCK+oRlKWmZEWh3xv9qrwCwov9Jme/KOE98zOMB1\n0/xwnYotPadV0de80wGvKT7OlBlGulQRRhhgENNCPSxdUlozrPhrzGstXDr9zTYQ\noR3UD/7Ntmew3mnXvKj/8+U48hw913Xn6btBP3Uqg2OurXDGdrWciWgIMDEGyk65\nNOc8FOGa4AjYXzyi9TqOIfmysWhzKzU+fLysZQo10DfznnQN3w9+pI+20j2zB6gg\npL75RjZKYgHU49pbvjF/eOSTOg9o5HwX0wIDAQAB\n-----END RSA PUBLIC KEY-----\n"
}
{
"hash_id": "���\u0010fV+�{��DD�F�;Hָ�`��椼q\u0017���",
"min_ial": 3,
"min_aal": 3,
}
{
"node": [
{
"id": "IdP1",
"name": "IdP Number 1 from ..."
},
{
"id": "IdP2",
"name": ""
}
]
}
{
"accessor_id": "TestAccessorID"
}
{
"accessor_type": "TestAccessorType",
"accessor_key": "TestAccessorKey",
"commitment": "TestCommitment"
}
{
"service_id": "statement"
}
{
"node_id": [
"AS1"
]
}
{
"node_id": "IdP1"
}
{
"ip": "192.168.3.99",
"port": 8000
}
{
"requestId": "ef6f4c9c-818b-42b8-8904-3d97c4c520f6"
}
{
"status": "pending",
"is_closed": false,
"is_timed_out": true,
"messageHash": "hash('Please allow...')"
}
{
"requestId": "ef6f4c9c-818b-42b8-8904-3d97c4c520f6"
}
{
"request_id": "ef6f4c9c-818b-42b8-8904-3d97c4c520f6",
"min_idp": 1,
"min_aal": 1,
"min_ial": 1,
"timeout": 259200,
"data_request_list": null,
"message_hash": "hash('Please allow...')",
"responses": [
{
"request_id": "ef6f4c9c-818b-42b8-8904-3d97c4c520f6",
"aal": 3,
"ial": 3,
"status": "accept",
"signature": "signature",
"accessor_id": "TestAccessorID",
"identity_proof": "Magic"
}
]
}
{
"node_id": "RP1"
}
{
"amount": 100
}
{
"func": "CreateRequest"
}
{
"price": 99.99
}
{
"node_id": "AS1"
}
[
{
"method": "RegisterServiceDestination",
"price": 1,
"data": ""
},
{
"method": "SignData",
"price": 1,
"data": "ef6f4c9c-818b-42b8-8904-3d97c4c520f6"
}
]
{
"service_id": "statement",
"node_id": "AS1"
}
{
"service_name": "Bank statement",
"min_ial": 1.1,
"min_aal": 1.2
}
[
{
"namespace": "CID",
"description": "Citizen ID"
}
]