gradido/docu/other/communication logs/create_group_v2.txt
Ulf Gebhardt 610971f5d3
included existing docu
transformed a lot of odt & txt files to md format
2021-04-16 22:08:51 +02:00

82 lines
3.4 KiB
Plaintext

Note to Hedera and Gradido Transactions:
- A Transaction contain TransactionBody serialized
- TransactionBody contains the actual transaction
- Hedera has namespace proto, gradido has namespace model.messages.gradido
LoginServer
register NodeServer with (username and password) or API key
LoginServer get called with data from http form:
- 1 group name
- 1 group alias
- x registered node server(s), evt. with API key if not saved
check if alias in unique with choosen NodeServer
{"jsonrpc": "2.0", "method": "checkAlias", "params": {"alias": <from form>, "apiKey": <optional, unique per Login Server>}, "id": rand()}
Gradido Node return result with 0 or 1 and memorize if apiKey is given (only in memory) by 0 request for 10 minutes
0 = alias unknown
1 = alias known
2 = has blockchain for group of alias
Hedera::ConsensusService::createTopic
get TransactionReceipt with TopicID (if succeed, alias unknown)
// TopicID consists of three int64: shardNum, realmNum, topicNum
Hedera::ConsensusService::ConsensusSubmitMessage
proto.ConsensusSubmitMessageTransactionBody.topicID = gradido_discover_topicid // global, must obtained before first node server can go online, maybe hardcoded?
proto.ConsensusSubmitMessageTransactionBody.message =
model.messages.gradido.Transaction
id = <left empty>;
received = <left empty>;
sigMap = model.messages.gradido.SignatureMap
sigPair = model.messages.gradido.SignaturePair
pubKey = <public root key of group founder>
signature = ed25519 = <bodyBytes signed with group founder private key>
txHash = <left empty>;
bodyBytes = model.messages.gradido.TransactionBody serialized
memo = <empty>
created = model.messages.gradido.TimestampSeconds
seconds = <current timestamp>
data = model.messages.gradido.StateCreateGroup
name = <group name>
alias = <group alias>
parentGroupAlias = <parent group alias or empty>
hederaTopicId = <from hedera answear>
serialized
signed from user, he is the group founder now and can sign group related messages
Gradido Node receive from Hedera Mirror Node: model.messages.gradido.Transaction with model.messages.gradido.StateCreateGroup
validate and save create Group Transaction in state-chain
if checkAlias Request for this alias is memorized:
create blockchain for this group,
register for listen to topic of this group
send HTTP POST Request in json format to login server(s) how called checkAlias with this alias 10 minutes or less before {
/group_created {
"alias":StateCreateGroup.alias,
"topicID": StateCreateGroup.hederaTopicId,
"name": StateCreateGroup.name
}
LoginServer
Show succeed
-------------------------------------------------------------------------
if node server already know group
LoginServer
{"jsonrpc": "2.0", "method": "addGroup", "params": {"alias": <from form>, "apiKey": <unique per Login Server>}, "id": rand()}
GradidoNode
return {"jsonrpc": "2.0", "result": {"state": "not found", "msg":"group alias not known"}, "id": <id from call>}
create blockchain for this group,
register for listen to topic of this group
return {"jsonrpc": "2.0", "result": {
"alias":StateCreateGroup.alias,
"topicID": StateCreateGroup.hederaTopicId,
"name": StateCreateGroup.name
}, "id": <id from call>}