Slide 5
Slide 5 text
© 2022 Scalar, inc.
Confidential
ScalarDL: Ledger
5
User (Client)
Java
Contract
Signature
Private Key
ScalarDL Ledger
function invoke() {
if (accounts[0].data.balance < args.val) {
throw new Error(“not enough balance”);
}
accounts[0].data.balance -= args.val;
accounts[1].data.balance += args.val;
results = { … };
}
Payment Contract
Request :
(contract, args, sig)
Asset ID Age Data (before) Data (after) Sigs Func (ref) Args Hash
A 1 { } { balance = 100,
…}
charge { val = 100 }
B 1 { } { balance = 200,
…}
charge { val = 200 }
A 2 { A: {balance = 100},
B: {balance = 200} …}
{ balance = 90,
…}
payment { val = 10 }
SN
= Func (SN-1
, Args)
Deterministic & TE TE
If S0
is TE ⇒ SN
is TE
Public Key
B 2 { A: {balance = 100},
B: {balance = 200} …}
{ balance = 210,
…}
payment { val = 10 }
H(A1)
H(B1)
State
hash
chain
Data integrity of ledger entries:
Arguments
{ accounts = [“A”, “B”], val = 10, …}
* includes other accounts data
Argument