cic-internal-integration/apps/cic-eth/doc/flowcharts/transaction_semantic.dot

105 lines
1.6 KiB
Plaintext
Raw Normal View History

2021-02-01 18:12:51 +01:00
digraph G {
send [
label = "transfer";
shape = "ellipse";
];
params [
label = "get token, value, sender, recipient";
shape = "parallelogram";
];
token_lookup [
label = "token known?";
shape = "diamond";
];
token_lookup_x [
xlabel = "UnknownTokenError";
shape = "point";
];
nonce [
label = "get sender nonce";
shape = "box";
style = "dashed";
];
sign_tx [
label = "sign tx";
shape = "box";
];
sign_tx_x [
xlabel = "SignerError";
shape = "point";
];
cache [
label = "queue signed tx";
shape = "cylinder";
];
gas [
label = "safe sender balance for gas?";
shape = "diamond";
];
gas_rq_exists [
label = "gas request already pending?"
shape = "diamond";
];
gas_rq [
label = "queue request for gas";
shape = "parallelogram";
];
gas_tx [
label = "enough gas for this tx?";
shape = "diamond";
];
cache_waitforgas [
label = "set status to WAITFORGAS";
shape = "parallelogram";
];
gas_tx_x [
xlabel = "OutOfGasError";
shape = "point";
];
ok [
xlabel = "OK";
shape = "point";
];
send -> params -> token_lookup;
token_lookup -> token_lookup_x [ label = "no"; ];
token_lookup -> nonce [ label = "yes"; ];
nonce -> sign_tx;
sign_tx -> sign_tx_x [ label = "fail"; ];
sign_tx -> cache [ label = "ok"; ];
cache -> gas;
gas -> gas_rq_exists [ label = "no"; ];
gas_rq_exists -> gas_rq [ label = "no"; ];
gas_rq_exists -> gas_tx [ label = "yes"; ];
gas_rq -> gas_tx;
gas -> ok [ label = "yes"; ];
gas_tx -> cache_waitforgas -> gas_tx_x [ label = "no"; ];
gas_tx -> ok [ label = "yes"; ];
}