| Algorithm 1: Reputation Management and Leader Election Algorithm |
| Require: |
| blockHash(previous): Hash of previous block |
| block#(response): Block number of response time |
| block#(request): Block number of request time |
| Repi: Reputation of each oracle node |
| procedure Reputation_Management(): |
| 1: sum ← 0, i ← 1 |
| 2: RTleader = (block#(response) − block#(request)) × blockInterval |
| 3: while i ≤ Noracle do |
| 4: sum += RTi |
| 5: i ≤ i + 1 |
| end |
| 6: AvrgRT = sum/Noracle |
| 7: Rleader = AvrgRT/RTleader |
| 8: Cleader = min(Nresponse/Nlimit, 1) |
| 9: Repleader = Repleader × Rleader × Cleader |
| 10: |
| procedure Leader_Election(): |
| 11: sum ← 0, i ← 1 |
| 12: while i ≤ Noracle do |
| 13: sum += Repi |
| 14: i ← i + 1 |
| end |
| 15: mod = blockHash(previous)%sum |
| 16: while mod ≥ 0 do |
| 17: mod = mod − Repi |
| 18: if mod < 0 then |
| 19: i-th oracle node is elected as a leader node |
| end |
| 20: i ← i + 1 |
| end |