Alpha: rename bond
into deposit
This commit is contained in:
parent
987e4a5314
commit
71ee3114a7
@ -107,7 +107,7 @@ let test_endorsement_rewards block0 =
|
|||||||
done ;
|
done ;
|
||||||
return (!account, !cpt) in
|
return (!account, !cpt) in
|
||||||
|
|
||||||
let bond = Tez.to_mutez Constants.endorsement_security_deposit in
|
let deposit = Tez.to_mutez Constants.endorsement_security_deposit in
|
||||||
|
|
||||||
(* Endorsement Rights *)
|
(* Endorsement Rights *)
|
||||||
(* #1 endorse & inject in a block *)
|
(* #1 endorse & inject in a block *)
|
||||||
@ -118,7 +118,7 @@ let test_endorsement_rewards block0 =
|
|||||||
Helpers.Baking.bake block0 b1 [ op ] >>=? fun hash1 ->
|
Helpers.Baking.bake block0 b1 [ op ] >>=? fun hash1 ->
|
||||||
Helpers.display_level (`Hash hash1) >>=? fun () ->
|
Helpers.display_level (`Hash hash1) >>=? fun () ->
|
||||||
Assert.balance_equal ~block:(`Hash hash1) ~msg:__LOC__ account0
|
Assert.balance_equal ~block:(`Hash hash1) ~msg:__LOC__ account0
|
||||||
(Int64.sub (Tez.to_mutez balance0) bond) >>=? fun () ->
|
(Int64.sub (Tez.to_mutez balance0) deposit) >>=? fun () ->
|
||||||
|
|
||||||
(* #2 endorse & inject in a block *)
|
(* #2 endorse & inject in a block *)
|
||||||
let block1 = `Hash hash1 in
|
let block1 = `Hash hash1 in
|
||||||
@ -129,7 +129,7 @@ let test_endorsement_rewards block0 =
|
|||||||
Helpers.Baking.bake block1 b1 [ op ] >>=? fun hash2 ->
|
Helpers.Baking.bake block1 b1 [ op ] >>=? fun hash2 ->
|
||||||
Helpers.display_level (`Hash hash2) >>=? fun () ->
|
Helpers.display_level (`Hash hash2) >>=? fun () ->
|
||||||
Assert.balance_equal ~block:(`Hash hash2) ~msg:__LOC__ account1
|
Assert.balance_equal ~block:(`Hash hash2) ~msg:__LOC__ account1
|
||||||
(Int64.sub (Tez.to_mutez balance1) bond) >>=? fun () ->
|
(Int64.sub (Tez.to_mutez balance1) deposit) >>=? fun () ->
|
||||||
|
|
||||||
(*
|
(*
|
||||||
(* Check rewards after one cycle for account0 *)
|
(* Check rewards after one cycle for account0 *)
|
||||||
|
@ -86,7 +86,7 @@ let source_arg =
|
|||||||
arg
|
arg
|
||||||
~long:"source"
|
~long:"source"
|
||||||
~placeholder:"identity"
|
~placeholder:"identity"
|
||||||
~doc:"source of the bonds to be paid\n\
|
~doc:"source of the deposits to be paid\n\
|
||||||
Must be a known identity."
|
Must be a known identity."
|
||||||
string_parameter
|
string_parameter
|
||||||
|
|
||||||
|
@ -356,7 +356,7 @@ module Nonce : sig
|
|||||||
type unrevealed = {
|
type unrevealed = {
|
||||||
nonce_hash: Nonce_hash.t ;
|
nonce_hash: Nonce_hash.t ;
|
||||||
delegate: public_key_hash ;
|
delegate: public_key_hash ;
|
||||||
bond: Tez.t ;
|
deposit: Tez.t ;
|
||||||
rewards: Tez.t ;
|
rewards: Tez.t ;
|
||||||
fees: Tez.t ;
|
fees: Tez.t ;
|
||||||
}
|
}
|
||||||
@ -495,7 +495,7 @@ module Delegate : sig
|
|||||||
|
|
||||||
val list: context -> public_key_hash list Lwt.t
|
val list: context -> public_key_hash list Lwt.t
|
||||||
|
|
||||||
val freeze_bond:
|
val freeze_deposit:
|
||||||
context -> public_key_hash -> Tez.t -> context tzresult Lwt.t
|
context -> public_key_hash -> Tez.t -> context tzresult Lwt.t
|
||||||
|
|
||||||
val freeze_rewards:
|
val freeze_rewards:
|
||||||
|
@ -308,7 +308,7 @@ let apply_consensus_operation_content ctxt
|
|||||||
Operation.check_signature delegate operation >>=? fun () ->
|
Operation.check_signature delegate operation >>=? fun () ->
|
||||||
let delegate = Ed25519.Public_key.hash delegate in
|
let delegate = Ed25519.Public_key.hash delegate in
|
||||||
let ctxt = Fitness.increase ~gap:(List.length slots) ctxt in
|
let ctxt = Fitness.increase ~gap:(List.length slots) ctxt in
|
||||||
Baking.freeze_endorsement_bond ctxt delegate >>=? fun ctxt ->
|
Baking.freeze_endorsement_deposit ctxt delegate >>=? fun ctxt ->
|
||||||
Baking.endorsement_reward ~block_priority >>=? fun reward ->
|
Baking.endorsement_reward ~block_priority >>=? fun reward ->
|
||||||
Delegate.freeze_rewards ctxt delegate reward >>=? fun ctxt ->
|
Delegate.freeze_rewards ctxt delegate reward >>=? fun ctxt ->
|
||||||
return ctxt
|
return ctxt
|
||||||
@ -603,9 +603,9 @@ let begin_full_construction ctxt pred_timestamp protocol_data =
|
|||||||
Baking.check_baking_rights
|
Baking.check_baking_rights
|
||||||
ctxt protocol_data pred_timestamp >>=? fun delegate_pk ->
|
ctxt protocol_data pred_timestamp >>=? fun delegate_pk ->
|
||||||
let delegate_pkh = Ed25519.Public_key.hash delegate_pk in
|
let delegate_pkh = Ed25519.Public_key.hash delegate_pk in
|
||||||
Baking.freeze_baking_bond ctxt protocol_data delegate_pkh >>=? fun (ctxt, bond) ->
|
Baking.freeze_baking_deposit ctxt protocol_data delegate_pkh >>=? fun (ctxt, deposit) ->
|
||||||
let ctxt = Fitness.increase ctxt in
|
let ctxt = Fitness.increase ctxt in
|
||||||
return (ctxt, protocol_data, delegate_pk, bond)
|
return (ctxt, protocol_data, delegate_pk, deposit)
|
||||||
|
|
||||||
let begin_partial_construction ctxt =
|
let begin_partial_construction ctxt =
|
||||||
let ctxt = Fitness.increase ctxt in
|
let ctxt = Fitness.increase ctxt in
|
||||||
@ -627,12 +627,12 @@ let begin_application ctxt block_header pred_timestamp =
|
|||||||
(Invalid_commitment
|
(Invalid_commitment
|
||||||
{ expected = current_level.expected_commitment }) >>=? fun () ->
|
{ expected = current_level.expected_commitment }) >>=? fun () ->
|
||||||
let delegate_pkh = Ed25519.Public_key.hash delegate_pk in
|
let delegate_pkh = Ed25519.Public_key.hash delegate_pk in
|
||||||
Baking.freeze_baking_bond ctxt
|
Baking.freeze_baking_deposit ctxt
|
||||||
block_header.protocol_data delegate_pkh >>=? fun (ctxt, bond) ->
|
block_header.protocol_data delegate_pkh >>=? fun (ctxt, deposit) ->
|
||||||
let ctxt = Fitness.increase ctxt in
|
let ctxt = Fitness.increase ctxt in
|
||||||
return (ctxt, delegate_pk, bond)
|
return (ctxt, delegate_pk, deposit)
|
||||||
|
|
||||||
let finalize_application ctxt protocol_data delegate bond fees rewards =
|
let finalize_application ctxt protocol_data delegate deposit fees rewards =
|
||||||
(* end of level (from this point nothing should fail) *)
|
(* end of level (from this point nothing should fail) *)
|
||||||
Lwt.return Tez.(rewards +? Constants.block_reward) >>=? fun rewards ->
|
Lwt.return Tez.(rewards +? Constants.block_reward) >>=? fun rewards ->
|
||||||
Delegate.freeze_fees ctxt delegate fees >>=? fun ctxt ->
|
Delegate.freeze_fees ctxt delegate fees >>=? fun ctxt ->
|
||||||
@ -642,7 +642,7 @@ let finalize_application ctxt protocol_data delegate bond fees rewards =
|
|||||||
| None -> return ctxt
|
| None -> return ctxt
|
||||||
| Some nonce_hash ->
|
| Some nonce_hash ->
|
||||||
Nonce.record_hash ctxt
|
Nonce.record_hash ctxt
|
||||||
{ nonce_hash ; delegate ; bond ; rewards ; fees }
|
{ nonce_hash ; delegate ; deposit ; rewards ; fees }
|
||||||
end >>=? fun ctxt ->
|
end >>=? fun ctxt ->
|
||||||
(* end of cycle *)
|
(* end of cycle *)
|
||||||
may_snapshot_roll ctxt >>=? fun ctxt ->
|
may_snapshot_roll ctxt >>=? fun ctxt ->
|
||||||
|
@ -14,8 +14,8 @@ open Misc
|
|||||||
type error += Invalid_fitness_gap of int64 * int64 (* `Permanent *)
|
type error += Invalid_fitness_gap of int64 * int64 (* `Permanent *)
|
||||||
type error += Invalid_endorsement_slot of int * int (* `Permanent *)
|
type error += Invalid_endorsement_slot of int * int (* `Permanent *)
|
||||||
type error += Timestamp_too_early of Timestamp.t * Timestamp.t (* `Permanent *)
|
type error += Timestamp_too_early of Timestamp.t * Timestamp.t (* `Permanent *)
|
||||||
type error += Cannot_freeze_baking_bond (* `Permanent *)
|
type error += Cannot_freeze_baking_deposit (* `Permanent *)
|
||||||
type error += Cannot_freeze_endorsement_bond (* `Permanent *)
|
type error += Cannot_freeze_endorsement_deposit (* `Permanent *)
|
||||||
type error += Inconsistent_endorsement of public_key_hash list (* `Permanent *)
|
type error += Inconsistent_endorsement of public_key_hash list (* `Permanent *)
|
||||||
type error += Empty_endorsement
|
type error += Empty_endorsement
|
||||||
type error += Invalid_block_signature of Block_hash.t * Ed25519.Public_key_hash.t (* `Permanent *)
|
type error += Invalid_block_signature of Block_hash.t * Ed25519.Public_key_hash.t (* `Permanent *)
|
||||||
@ -64,24 +64,24 @@ let () =
|
|||||||
(fun (m, g) -> Invalid_endorsement_slot (m, g)) ;
|
(fun (m, g) -> Invalid_endorsement_slot (m, g)) ;
|
||||||
register_error_kind
|
register_error_kind
|
||||||
`Permanent
|
`Permanent
|
||||||
~id:"baking.cannot_freeze_baking_bond"
|
~id:"baking.cannot_freeze_baking_deposit"
|
||||||
~title:"Cannot freeze baking bond"
|
~title:"Cannot freeze baking deposit"
|
||||||
~description:
|
~description:
|
||||||
"Impossible to debit the required tokens on the baker's contract"
|
"Impossible to debit the required tokens on the baker's contract"
|
||||||
~pp:(fun ppf () -> Format.fprintf ppf "Cannot freeze the baking bond")
|
~pp:(fun ppf () -> Format.fprintf ppf "Cannot freeze the baking deposit")
|
||||||
Data_encoding.unit
|
Data_encoding.unit
|
||||||
(function Cannot_freeze_baking_bond -> Some () | _ -> None)
|
(function Cannot_freeze_baking_deposit -> Some () | _ -> None)
|
||||||
(fun () -> Cannot_freeze_baking_bond) ;
|
(fun () -> Cannot_freeze_baking_deposit) ;
|
||||||
register_error_kind
|
register_error_kind
|
||||||
`Permanent
|
`Permanent
|
||||||
~id:"baking.cannot_freeze_endorsement_bond"
|
~id:"baking.cannot_freeze_endorsement_deposit"
|
||||||
~title:"Cannot freeze endorsement bond"
|
~title:"Cannot freeze endorsement deposit"
|
||||||
~description:
|
~description:
|
||||||
"Impossible to debit the required tokens on the endorser's contract"
|
"Impossible to debit the required tokens on the endorser's contract"
|
||||||
~pp:(fun ppf () -> Format.fprintf ppf "Cannot freeze the endorsement bond")
|
~pp:(fun ppf () -> Format.fprintf ppf "Cannot freeze the endorsement deposit")
|
||||||
Data_encoding.unit
|
Data_encoding.unit
|
||||||
(function Cannot_freeze_endorsement_bond -> Some () | _ -> None)
|
(function Cannot_freeze_endorsement_deposit -> Some () | _ -> None)
|
||||||
(fun () -> Cannot_freeze_endorsement_bond) ;
|
(fun () -> Cannot_freeze_endorsement_deposit) ;
|
||||||
register_error_kind
|
register_error_kind
|
||||||
`Permanent
|
`Permanent
|
||||||
~id:"baking.inconsisten_endorsement"
|
~id:"baking.inconsisten_endorsement"
|
||||||
@ -130,19 +130,19 @@ let minimal_time c priority pred_timestamp =
|
|||||||
(cumsum_time_between_blocks
|
(cumsum_time_between_blocks
|
||||||
pred_timestamp (Constants.time_between_blocks c) (Int32.succ priority))
|
pred_timestamp (Constants.time_between_blocks c) (Int32.succ priority))
|
||||||
|
|
||||||
let freeze_baking_bond ctxt { Block_header.priority ; _ } delegate =
|
let freeze_baking_deposit ctxt { Block_header.priority ; _ } delegate =
|
||||||
if Compare.Int.(priority >= Constants.first_free_baking_slot ctxt)
|
if Compare.Int.(priority >= Constants.first_free_baking_slot ctxt)
|
||||||
then return (ctxt, Tez.zero)
|
then return (ctxt, Tez.zero)
|
||||||
else
|
else
|
||||||
let bond = Constants.block_security_deposit in
|
let deposit = Constants.block_security_deposit in
|
||||||
Delegate.freeze_bond ctxt delegate bond
|
Delegate.freeze_deposit ctxt delegate deposit
|
||||||
|> trace Cannot_freeze_baking_bond >>=? fun ctxt ->
|
|> trace Cannot_freeze_baking_deposit >>=? fun ctxt ->
|
||||||
return (ctxt, bond)
|
return (ctxt, deposit)
|
||||||
|
|
||||||
let freeze_endorsement_bond ctxt delegate =
|
let freeze_endorsement_deposit ctxt delegate =
|
||||||
let bond = Constants.endorsement_security_deposit in
|
let deposit = Constants.endorsement_security_deposit in
|
||||||
Delegate.freeze_bond ctxt delegate bond
|
Delegate.freeze_deposit ctxt delegate deposit
|
||||||
|> trace Cannot_freeze_endorsement_bond
|
|> trace Cannot_freeze_endorsement_deposit
|
||||||
|
|
||||||
let check_timestamp c priority pred_timestamp =
|
let check_timestamp c priority pred_timestamp =
|
||||||
minimal_time c priority pred_timestamp >>=? fun minimal_time ->
|
minimal_time c priority pred_timestamp >>=? fun minimal_time ->
|
||||||
|
@ -15,8 +15,8 @@ type error += Invalid_fitness_gap of int64 * int64 (* `Permanent *)
|
|||||||
type error += Invalid_endorsement_slot of int * int (* `Permanent *)
|
type error += Invalid_endorsement_slot of int * int (* `Permanent *)
|
||||||
type error += Timestamp_too_early of Timestamp.t * Timestamp.t (* `Permanent *)
|
type error += Timestamp_too_early of Timestamp.t * Timestamp.t (* `Permanent *)
|
||||||
type error += Inconsistent_endorsement of public_key_hash list (* `Permanent *)
|
type error += Inconsistent_endorsement of public_key_hash list (* `Permanent *)
|
||||||
type error += Cannot_freeze_baking_bond (* `Permanent *)
|
type error += Cannot_freeze_baking_deposit (* `Permanent *)
|
||||||
type error += Cannot_freeze_endorsement_bond (* `Permanent *)
|
type error += Cannot_freeze_endorsement_deposit (* `Permanent *)
|
||||||
type error += Invalid_block_signature of Block_hash.t * Ed25519.Public_key_hash.t (* `Permanent *)
|
type error += Invalid_block_signature of Block_hash.t * Ed25519.Public_key_hash.t (* `Permanent *)
|
||||||
|
|
||||||
val paying_priorities: context -> int list
|
val paying_priorities: context -> int list
|
||||||
@ -28,34 +28,34 @@ val paying_priorities: context -> int list
|
|||||||
time cannot be computed. *)
|
time cannot be computed. *)
|
||||||
val minimal_time: context -> int -> Time.t -> Time.t tzresult Lwt.t
|
val minimal_time: context -> int -> Time.t -> Time.t tzresult Lwt.t
|
||||||
|
|
||||||
(** [freeze_baking_bond: ctxt delegate priority]
|
(** [freeze_baking_deposit: ctxt delegate priority]
|
||||||
Freeze the baking bond (See !Constants.block_security_deposit)
|
Freeze the baking deposit (See !Constants.block_security_deposit)
|
||||||
from a delegate account. No bond is frozen if the baking
|
from a delegate account. No deposit is frozen if the baking
|
||||||
priority of this block is greater than the maximum number
|
priority of this block is greater than the maximum number
|
||||||
of paying baking in the network (meaning that n. bakers
|
of paying baking in the network (meaning that n. bakers
|
||||||
skipped their turn).
|
skipped their turn).
|
||||||
|
|
||||||
Raise an error if the delegate account does not have enough
|
Raise an error if the delegate account does not have enough
|
||||||
funds to claim baking rights. *)
|
funds to claim baking rights. *)
|
||||||
val freeze_baking_bond:
|
val freeze_baking_deposit:
|
||||||
context ->
|
context ->
|
||||||
Block_header.protocol_data ->
|
Block_header.protocol_data ->
|
||||||
public_key_hash ->
|
public_key_hash ->
|
||||||
(context * Tez.t) tzresult Lwt.t
|
(context * Tez.t) tzresult Lwt.t
|
||||||
|
|
||||||
(** [freeze_endorsement_bond: ctxt delegate]
|
(** [freeze_endorsement_deposit: ctxt delegate]
|
||||||
Freeze the endorsement bond (See !Constants.endorsement_security_deposit)
|
Freeze the endorsement deposit (See !Constants.endorsement_security_deposit)
|
||||||
from the delegate account.
|
from the delegate account.
|
||||||
|
|
||||||
Raise an error if the baker account does not have enough
|
Raise an error if the baker account does not have enough
|
||||||
funds to claim endorsement rights *)
|
funds to claim endorsement rights *)
|
||||||
val freeze_endorsement_bond:
|
val freeze_endorsement_deposit:
|
||||||
context -> public_key_hash -> context tzresult Lwt.t
|
context -> public_key_hash -> context tzresult Lwt.t
|
||||||
|
|
||||||
(** [check_baking_rights ctxt block pred_timestamp] verifies that:
|
(** [check_baking_rights ctxt block pred_timestamp] verifies that:
|
||||||
* the contract that owned the roll at cycle start has the block signer as delegate.
|
* the contract that owned the roll at cycle start has the block signer as delegate.
|
||||||
* the timestamp is coherent with the announced slot.
|
* the timestamp is coherent with the announced slot.
|
||||||
* the bond have been payed if the slot is below [Constants.first_free_baking_slot].
|
* the deposit have been payed if the slot is below [Constants.first_free_baking_slot].
|
||||||
*)
|
*)
|
||||||
val check_baking_rights:
|
val check_baking_rights:
|
||||||
context -> Block_header.protocol_data -> Time.t ->
|
context -> Block_header.protocol_data -> Time.t ->
|
||||||
|
@ -184,30 +184,30 @@ let fold = Storage.Delegates.fold
|
|||||||
let list = Storage.Delegates.elements
|
let list = Storage.Delegates.elements
|
||||||
|
|
||||||
|
|
||||||
let get_frozen_bond ctxt contract cycle =
|
let get_frozen_deposit ctxt contract cycle =
|
||||||
Storage.Contract.Frozen_bonds.get_option (ctxt, contract) cycle >>=? function
|
Storage.Contract.Frozen_deposits.get_option (ctxt, contract) cycle >>=? function
|
||||||
| None -> return Tez_repr.zero
|
| None -> return Tez_repr.zero
|
||||||
| Some frozen -> return frozen
|
| Some frozen -> return frozen
|
||||||
|
|
||||||
let credit_frozen_bond ctxt contract cycle amount =
|
let credit_frozen_deposit ctxt contract cycle amount =
|
||||||
get_frozen_bond ctxt contract cycle >>=? fun old_amount ->
|
get_frozen_deposit ctxt contract cycle >>=? fun old_amount ->
|
||||||
Lwt.return Tez_repr.(old_amount +? amount) >>=? fun new_amount ->
|
Lwt.return Tez_repr.(old_amount +? amount) >>=? fun new_amount ->
|
||||||
Storage.Contract.Frozen_bonds.init_set
|
Storage.Contract.Frozen_deposits.init_set
|
||||||
(ctxt, contract) cycle new_amount >>= fun ctxt ->
|
(ctxt, contract) cycle new_amount >>= fun ctxt ->
|
||||||
return ctxt
|
return ctxt
|
||||||
|
|
||||||
let freeze_bond ctxt delegate amount =
|
let freeze_deposit ctxt delegate amount =
|
||||||
let { Level_repr.cycle ; _ } = Level_storage.current ctxt in
|
let { Level_repr.cycle ; _ } = Level_storage.current ctxt in
|
||||||
Roll_storage.Delegate.set_active ctxt delegate >>=? fun ctxt ->
|
Roll_storage.Delegate.set_active ctxt delegate >>=? fun ctxt ->
|
||||||
let contract = Contract_repr.implicit_contract delegate in
|
let contract = Contract_repr.implicit_contract delegate in
|
||||||
Storage.Contract.Balance.get ctxt contract >>=? fun balance ->
|
Storage.Contract.Balance.get ctxt contract >>=? fun balance ->
|
||||||
Lwt.return Tez_repr.(balance -? amount) >>=? fun new_balance ->
|
Lwt.return Tez_repr.(balance -? amount) >>=? fun new_balance ->
|
||||||
Storage.Contract.Balance.set ctxt contract new_balance >>=? fun ctxt ->
|
Storage.Contract.Balance.set ctxt contract new_balance >>=? fun ctxt ->
|
||||||
credit_frozen_bond ctxt contract cycle amount
|
credit_frozen_deposit ctxt contract cycle amount
|
||||||
|
|
||||||
let burn_bond ctxt delegate cycle amount =
|
let burn_deposit ctxt delegate cycle amount =
|
||||||
let contract = Contract_repr.implicit_contract delegate in
|
let contract = Contract_repr.implicit_contract delegate in
|
||||||
get_frozen_bond ctxt contract cycle >>=? fun old_amount ->
|
get_frozen_deposit ctxt contract cycle >>=? fun old_amount ->
|
||||||
begin
|
begin
|
||||||
match Tez_repr.(old_amount -? amount) with
|
match Tez_repr.(old_amount -? amount) with
|
||||||
| Ok new_amount ->
|
| Ok new_amount ->
|
||||||
@ -219,7 +219,7 @@ let burn_bond ctxt delegate cycle amount =
|
|||||||
ctxt delegate old_amount >>=? fun ctxt ->
|
ctxt delegate old_amount >>=? fun ctxt ->
|
||||||
return (Tez_repr.zero, ctxt)
|
return (Tez_repr.zero, ctxt)
|
||||||
end >>=? fun (new_amount, ctxt) ->
|
end >>=? fun (new_amount, ctxt) ->
|
||||||
Storage.Contract.Frozen_bonds.set (ctxt, contract) cycle new_amount
|
Storage.Contract.Frozen_deposits.set (ctxt, contract) cycle new_amount
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -288,16 +288,16 @@ let burn_rewards ctxt delegate cycle amount =
|
|||||||
|
|
||||||
let unfreeze ctxt delegate cycle =
|
let unfreeze ctxt delegate cycle =
|
||||||
let contract = Contract_repr.implicit_contract delegate in
|
let contract = Contract_repr.implicit_contract delegate in
|
||||||
get_frozen_bond ctxt contract cycle >>=? fun bond ->
|
get_frozen_deposit ctxt contract cycle >>=? fun deposit ->
|
||||||
get_frozen_fees ctxt contract cycle >>=? fun fees ->
|
get_frozen_fees ctxt contract cycle >>=? fun fees ->
|
||||||
get_frozen_rewards ctxt contract cycle >>=? fun rewards ->
|
get_frozen_rewards ctxt contract cycle >>=? fun rewards ->
|
||||||
Storage.Contract.Balance.get ctxt contract >>=? fun balance ->
|
Storage.Contract.Balance.get ctxt contract >>=? fun balance ->
|
||||||
Lwt.return Tez_repr.(balance +? bond) >>=? fun balance ->
|
Lwt.return Tez_repr.(balance +? deposit) >>=? fun balance ->
|
||||||
Lwt.return Tez_repr.(balance +? fees) >>=? fun balance ->
|
Lwt.return Tez_repr.(balance +? fees) >>=? fun balance ->
|
||||||
Lwt.return Tez_repr.(balance +? rewards) >>=? fun balance ->
|
Lwt.return Tez_repr.(balance +? rewards) >>=? fun balance ->
|
||||||
Storage.Contract.Balance.set ctxt contract balance >>=? fun ctxt ->
|
Storage.Contract.Balance.set ctxt contract balance >>=? fun ctxt ->
|
||||||
Roll_storage.Delegate.add_amount ctxt delegate rewards >>=? fun ctxt ->
|
Roll_storage.Delegate.add_amount ctxt delegate rewards >>=? fun ctxt ->
|
||||||
Storage.Contract.Frozen_bonds.remove (ctxt, contract) cycle >>= fun ctxt ->
|
Storage.Contract.Frozen_deposits.remove (ctxt, contract) cycle >>= fun ctxt ->
|
||||||
Storage.Contract.Frozen_fees.remove (ctxt, contract) cycle >>= fun ctxt ->
|
Storage.Contract.Frozen_fees.remove (ctxt, contract) cycle >>= fun ctxt ->
|
||||||
Storage.Contract.Frozen_rewards.remove (ctxt, contract) cycle >>= fun ctxt ->
|
Storage.Contract.Frozen_rewards.remove (ctxt, contract) cycle >>= fun ctxt ->
|
||||||
return ctxt
|
return ctxt
|
||||||
@ -311,8 +311,8 @@ let cycle_end ctxt last_cycle unrevealed =
|
|||||||
List.fold_left
|
List.fold_left
|
||||||
(fun ctxt (u : Nonce_storage.unrevealed) ->
|
(fun ctxt (u : Nonce_storage.unrevealed) ->
|
||||||
ctxt >>=? fun ctxt ->
|
ctxt >>=? fun ctxt ->
|
||||||
burn_bond
|
burn_deposit
|
||||||
ctxt u.delegate revealed_cycle u.bond >>=? fun ctxt ->
|
ctxt u.delegate revealed_cycle u.deposit >>=? fun ctxt ->
|
||||||
burn_fees
|
burn_fees
|
||||||
ctxt u.delegate revealed_cycle u.fees >>=? fun ctxt ->
|
ctxt u.delegate revealed_cycle u.fees >>=? fun ctxt ->
|
||||||
burn_rewards
|
burn_rewards
|
||||||
@ -337,21 +337,21 @@ let cycle_end ctxt last_cycle unrevealed =
|
|||||||
|
|
||||||
let punish ctxt delegate cycle =
|
let punish ctxt delegate cycle =
|
||||||
let contract = Contract_repr.implicit_contract delegate in
|
let contract = Contract_repr.implicit_contract delegate in
|
||||||
get_frozen_bond ctxt contract cycle >>=? fun bond ->
|
get_frozen_deposit ctxt contract cycle >>=? fun deposit ->
|
||||||
get_frozen_fees ctxt contract cycle >>=? fun fees ->
|
get_frozen_fees ctxt contract cycle >>=? fun fees ->
|
||||||
Roll_storage.Delegate.remove_amount ctxt delegate bond >>=? fun ctxt ->
|
Roll_storage.Delegate.remove_amount ctxt delegate deposit >>=? fun ctxt ->
|
||||||
Roll_storage.Delegate.remove_amount ctxt delegate fees >>=? fun ctxt ->
|
Roll_storage.Delegate.remove_amount ctxt delegate fees >>=? fun ctxt ->
|
||||||
Storage.Contract.Frozen_bonds.remove (ctxt, contract) cycle >>= fun ctxt ->
|
Storage.Contract.Frozen_deposits.remove (ctxt, contract) cycle >>= fun ctxt ->
|
||||||
Storage.Contract.Frozen_fees.remove (ctxt, contract) cycle >>= fun ctxt ->
|
Storage.Contract.Frozen_fees.remove (ctxt, contract) cycle >>= fun ctxt ->
|
||||||
Storage.Contract.Frozen_rewards.remove (ctxt, contract) cycle >>= fun ctxt ->
|
Storage.Contract.Frozen_rewards.remove (ctxt, contract) cycle >>= fun ctxt ->
|
||||||
Lwt.return Tez_repr.(bond +? fees) >>=? fun burned ->
|
Lwt.return Tez_repr.(deposit +? fees) >>=? fun burned ->
|
||||||
return (ctxt, burned)
|
return (ctxt, burned)
|
||||||
|
|
||||||
|
|
||||||
let has_frozen_balance ctxt delegate cycle =
|
let has_frozen_balance ctxt delegate cycle =
|
||||||
let contract = Contract_repr.implicit_contract delegate in
|
let contract = Contract_repr.implicit_contract delegate in
|
||||||
get_frozen_bond ctxt contract cycle >>=? fun bond ->
|
get_frozen_deposit ctxt contract cycle >>=? fun deposit ->
|
||||||
if Tez_repr.(bond <> zero) then return true
|
if Tez_repr.(deposit <> zero) then return true
|
||||||
else
|
else
|
||||||
get_frozen_fees ctxt contract cycle >>=? fun fees ->
|
get_frozen_fees ctxt contract cycle >>=? fun fees ->
|
||||||
if Tez_repr.(fees <> zero) then return true
|
if Tez_repr.(fees <> zero) then return true
|
||||||
@ -362,7 +362,7 @@ let has_frozen_balance ctxt delegate cycle =
|
|||||||
let frozen_balance ctxt delegate =
|
let frozen_balance ctxt delegate =
|
||||||
let contract = Contract_repr.implicit_contract delegate in
|
let contract = Contract_repr.implicit_contract delegate in
|
||||||
let balance = Ok Tez_repr.zero in
|
let balance = Ok Tez_repr.zero in
|
||||||
Storage.Contract.Frozen_bonds.fold
|
Storage.Contract.Frozen_deposits.fold
|
||||||
(ctxt, contract) ~init:balance
|
(ctxt, contract) ~init:balance
|
||||||
~f:(fun _cycle amount acc ->
|
~f:(fun _cycle amount acc ->
|
||||||
Lwt.return acc >>=? fun acc ->
|
Lwt.return acc >>=? fun acc ->
|
||||||
|
@ -50,11 +50,11 @@ val fold:
|
|||||||
(** List all registred delegates. *)
|
(** List all registred delegates. *)
|
||||||
val list: Raw_context.t -> Ed25519.Public_key_hash.t list Lwt.t
|
val list: Raw_context.t -> Ed25519.Public_key_hash.t list Lwt.t
|
||||||
|
|
||||||
(** Various functions to 'freeze' tokens. A frozen 'bond' keeps its
|
(** Various functions to 'freeze' tokens. A frozen 'deposit' keeps its
|
||||||
associated rolls. When frozen, 'fees' may trigger new rolls
|
associated rolls. When frozen, 'fees' may trigger new rolls
|
||||||
allocation. Rewards won't trigger new rolls allocation until
|
allocation. Rewards won't trigger new rolls allocation until
|
||||||
unfrozen. *)
|
unfrozen. *)
|
||||||
val freeze_bond:
|
val freeze_deposit:
|
||||||
Raw_context.t -> Ed25519.Public_key_hash.t -> Tez_repr.t ->
|
Raw_context.t -> Ed25519.Public_key_hash.t -> Tez_repr.t ->
|
||||||
Raw_context.t tzresult Lwt.t
|
Raw_context.t tzresult Lwt.t
|
||||||
|
|
||||||
@ -67,14 +67,14 @@ val freeze_rewards:
|
|||||||
Raw_context.t tzresult Lwt.t
|
Raw_context.t tzresult Lwt.t
|
||||||
|
|
||||||
(** Trigger the context maintenance at the end of cycle 'n', i.e.:
|
(** Trigger the context maintenance at the end of cycle 'n', i.e.:
|
||||||
unfroze bond/fees/rewards from 'n - preserved_cycle' ; punish the
|
unfroze deposit/fees/rewards from 'n - preserved_cycle' ; punish the
|
||||||
provided unrevealed seeds (tipically seed from from cycle 'n -
|
provided unrevealed seeds (tipically seed from from cycle 'n -
|
||||||
1'). *)
|
1'). *)
|
||||||
val cycle_end:
|
val cycle_end:
|
||||||
Raw_context.t -> Cycle_repr.t -> Nonce_storage.unrevealed list ->
|
Raw_context.t -> Cycle_repr.t -> Nonce_storage.unrevealed list ->
|
||||||
Raw_context.t tzresult Lwt.t
|
Raw_context.t tzresult Lwt.t
|
||||||
|
|
||||||
(** Burn all then frozen bond/fees/rewards for a delegate at a given
|
(** Burn all then frozen deposit/fees/rewards for a delegate at a given
|
||||||
cycle. Returns the burned amount. *)
|
cycle. Returns the burned amount. *)
|
||||||
val punish:
|
val punish:
|
||||||
Raw_context.t -> Ed25519.Public_key_hash.t -> Cycle_repr.t ->
|
Raw_context.t -> Ed25519.Public_key_hash.t -> Cycle_repr.t ->
|
||||||
|
@ -44,7 +44,7 @@ type validation_state =
|
|||||||
{ mode : validation_mode ;
|
{ mode : validation_mode ;
|
||||||
ctxt : Alpha_context.t ;
|
ctxt : Alpha_context.t ;
|
||||||
op_count : int ;
|
op_count : int ;
|
||||||
bond : Alpha_context.Tez.t ;
|
deposit : Alpha_context.Tez.t ;
|
||||||
fees : Alpha_context.Tez.t ;
|
fees : Alpha_context.Tez.t ;
|
||||||
rewards : Alpha_context.Tez.t ;
|
rewards : Alpha_context.Tez.t ;
|
||||||
}
|
}
|
||||||
@ -71,9 +71,9 @@ let begin_application
|
|||||||
let timestamp = block_header.shell.timestamp in
|
let timestamp = block_header.shell.timestamp in
|
||||||
Alpha_context.init ~level ~timestamp ~fitness ctxt >>=? fun ctxt ->
|
Alpha_context.init ~level ~timestamp ~fitness ctxt >>=? fun ctxt ->
|
||||||
Apply.begin_application
|
Apply.begin_application
|
||||||
ctxt block_header pred_timestamp >>=? fun (ctxt, baker, bond) ->
|
ctxt block_header pred_timestamp >>=? fun (ctxt, baker, deposit) ->
|
||||||
let mode = Application { block_header ; baker = Ed25519.Public_key.hash baker } in
|
let mode = Application { block_header ; baker = Ed25519.Public_key.hash baker } in
|
||||||
return { mode ; ctxt ; op_count = 0 ; bond ;
|
return { mode ; ctxt ; op_count = 0 ; deposit ;
|
||||||
fees = Alpha_context.Tez.zero ;
|
fees = Alpha_context.Tez.zero ;
|
||||||
rewards = Alpha_context.Tez.zero }
|
rewards = Alpha_context.Tez.zero }
|
||||||
|
|
||||||
@ -98,13 +98,13 @@ let begin_construction
|
|||||||
| Some proto_header ->
|
| Some proto_header ->
|
||||||
Apply.begin_full_construction
|
Apply.begin_full_construction
|
||||||
ctxt pred_timestamp
|
ctxt pred_timestamp
|
||||||
proto_header >>=? fun (ctxt, protocol_data, baker, bond) ->
|
proto_header >>=? fun (ctxt, protocol_data, baker, deposit) ->
|
||||||
let mode =
|
let mode =
|
||||||
let baker = Ed25519.Public_key.hash baker in
|
let baker = Ed25519.Public_key.hash baker in
|
||||||
Full_construction { predecessor ; baker ; protocol_data } in
|
Full_construction { predecessor ; baker ; protocol_data } in
|
||||||
return (mode, ctxt, bond)
|
return (mode, ctxt, deposit)
|
||||||
end >>=? fun (mode, ctxt, bond) ->
|
end >>=? fun (mode, ctxt, deposit) ->
|
||||||
return { mode ; ctxt ; op_count = 0 ; bond ;
|
return { mode ; ctxt ; op_count = 0 ; deposit ;
|
||||||
fees = Alpha_context.Tez.zero ;
|
fees = Alpha_context.Tez.zero ;
|
||||||
rewards = Alpha_context.Tez.zero }
|
rewards = Alpha_context.Tez.zero }
|
||||||
|
|
||||||
@ -128,7 +128,7 @@ let apply_operation ({ mode ; ctxt ; op_count ; _ } as data) operation =
|
|||||||
Lwt.return Alpha_context.Tez.(rewards >>? (+?) data.rewards) >>=? fun rewards ->
|
Lwt.return Alpha_context.Tez.(rewards >>? (+?) data.rewards) >>=? fun rewards ->
|
||||||
return { data with ctxt ; op_count ; fees ; rewards }
|
return { data with ctxt ; op_count ; fees ; rewards }
|
||||||
|
|
||||||
let finalize_block { mode ; ctxt ; op_count ; bond ; fees ; rewards } =
|
let finalize_block { mode ; ctxt ; op_count ; deposit ; fees ; rewards } =
|
||||||
match mode with
|
match mode with
|
||||||
| Partial_construction _ ->
|
| Partial_construction _ ->
|
||||||
let ctxt = Alpha_context.finalize ctxt in
|
let ctxt = Alpha_context.finalize ctxt in
|
||||||
@ -137,7 +137,7 @@ let finalize_block { mode ; ctxt ; op_count ; bond ; fees ; rewards } =
|
|||||||
{ baker ; block_header = { protocol_data ; _ } }
|
{ baker ; block_header = { protocol_data ; _ } }
|
||||||
| Full_construction { protocol_data ; baker ; _ } ->
|
| Full_construction { protocol_data ; baker ; _ } ->
|
||||||
Apply.finalize_application
|
Apply.finalize_application
|
||||||
ctxt protocol_data baker bond fees rewards >>=? fun ctxt ->
|
ctxt protocol_data baker deposit fees rewards >>=? fun ctxt ->
|
||||||
let { level ; _ } : Alpha_context.Level.t =
|
let { level ; _ } : Alpha_context.Level.t =
|
||||||
Alpha_context. Level.current ctxt in
|
Alpha_context. Level.current ctxt in
|
||||||
let priority = protocol_data.priority in
|
let priority = protocol_data.priority in
|
||||||
|
@ -27,7 +27,7 @@ type validation_state =
|
|||||||
{ mode : validation_mode ;
|
{ mode : validation_mode ;
|
||||||
ctxt : Alpha_context.t ;
|
ctxt : Alpha_context.t ;
|
||||||
op_count : int ;
|
op_count : int ;
|
||||||
bond : Alpha_context.Tez.t ;
|
deposit : Alpha_context.Tez.t ;
|
||||||
fees : Alpha_context.Tez.t ;
|
fees : Alpha_context.Tez.t ;
|
||||||
rewards : Alpha_context.Tez.t ;
|
rewards : Alpha_context.Tez.t ;
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ let reveal c level nonce =
|
|||||||
type unrevealed = Storage.Seed.unrevealed_nonce = {
|
type unrevealed = Storage.Seed.unrevealed_nonce = {
|
||||||
nonce_hash: Nonce_hash.t ;
|
nonce_hash: Nonce_hash.t ;
|
||||||
delegate: Ed25519.Public_key_hash.t ;
|
delegate: Ed25519.Public_key_hash.t ;
|
||||||
bond: Tez_repr.t ;
|
deposit: Tez_repr.t ;
|
||||||
rewards: Tez_repr.t ;
|
rewards: Tez_repr.t ;
|
||||||
fees: Tez_repr.t ;
|
fees: Tez_repr.t ;
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ val encoding: nonce Data_encoding.t
|
|||||||
type unrevealed = Storage.Seed.unrevealed_nonce = {
|
type unrevealed = Storage.Seed.unrevealed_nonce = {
|
||||||
nonce_hash: Nonce_hash.t ;
|
nonce_hash: Nonce_hash.t ;
|
||||||
delegate: Ed25519.Public_key_hash.t ;
|
delegate: Ed25519.Public_key_hash.t ;
|
||||||
bond: Tez_repr.t ;
|
deposit: Tez_repr.t ;
|
||||||
rewards: Tez_repr.t ;
|
rewards: Tez_repr.t ;
|
||||||
fees: Tez_repr.t ;
|
fees: Tez_repr.t ;
|
||||||
}
|
}
|
||||||
|
@ -72,9 +72,9 @@ module Contract = struct
|
|||||||
(struct let name = ["frozen_balance"] end))
|
(struct let name = ["frozen_balance"] end))
|
||||||
(Cycle_repr.Index)
|
(Cycle_repr.Index)
|
||||||
|
|
||||||
module Frozen_bonds =
|
module Frozen_deposits =
|
||||||
Frozen_balance_index.Make_map
|
Frozen_balance_index.Make_map
|
||||||
(struct let name = ["bonds"] end)
|
(struct let name = ["deposits"] end)
|
||||||
(Make_value(Tez_repr))
|
(Make_value(Tez_repr))
|
||||||
|
|
||||||
module Frozen_fees =
|
module Frozen_fees =
|
||||||
@ -206,7 +206,7 @@ module Cycle = struct
|
|||||||
type unrevealed_nonce = {
|
type unrevealed_nonce = {
|
||||||
nonce_hash: Nonce_hash.t ;
|
nonce_hash: Nonce_hash.t ;
|
||||||
delegate: Ed25519.Public_key_hash.t ;
|
delegate: Ed25519.Public_key_hash.t ;
|
||||||
bond: Tez_repr.t ;
|
deposit: Tez_repr.t ;
|
||||||
rewards: Tez_repr.t ;
|
rewards: Tez_repr.t ;
|
||||||
fees: Tez_repr.t ;
|
fees: Tez_repr.t ;
|
||||||
}
|
}
|
||||||
@ -226,11 +226,11 @@ module Cycle = struct
|
|||||||
Tez_repr.encoding
|
Tez_repr.encoding
|
||||||
Tez_repr.encoding)
|
Tez_repr.encoding)
|
||||||
(function
|
(function
|
||||||
| Unrevealed { nonce_hash ; delegate ; bond ; rewards ; fees } ->
|
| Unrevealed { nonce_hash ; delegate ; deposit ; rewards ; fees } ->
|
||||||
Some (nonce_hash, delegate, bond, rewards, fees)
|
Some (nonce_hash, delegate, deposit, rewards, fees)
|
||||||
| _ -> None)
|
| _ -> None)
|
||||||
(fun (nonce_hash, delegate, bond, rewards, fees) ->
|
(fun (nonce_hash, delegate, deposit, rewards, fees) ->
|
||||||
Unrevealed { nonce_hash ; delegate ; bond ; rewards ; fees }) ;
|
Unrevealed { nonce_hash ; delegate ; deposit ; rewards ; fees }) ;
|
||||||
case (Tag 1)
|
case (Tag 1)
|
||||||
Seed_repr.nonce_encoding
|
Seed_repr.nonce_encoding
|
||||||
(function
|
(function
|
||||||
@ -395,7 +395,7 @@ module Seed = struct
|
|||||||
type unrevealed_nonce = Cycle.unrevealed_nonce = {
|
type unrevealed_nonce = Cycle.unrevealed_nonce = {
|
||||||
nonce_hash: Nonce_hash.t ;
|
nonce_hash: Nonce_hash.t ;
|
||||||
delegate: Ed25519.Public_key_hash.t ;
|
delegate: Ed25519.Public_key_hash.t ;
|
||||||
bond: Tez_repr.t ;
|
deposit: Tez_repr.t ;
|
||||||
rewards: Tez_repr.t ;
|
rewards: Tez_repr.t ;
|
||||||
fees: Tez_repr.t ;
|
fees: Tez_repr.t ;
|
||||||
}
|
}
|
||||||
|
@ -102,7 +102,7 @@ module Contract : sig
|
|||||||
and type t := Raw_context.t
|
and type t := Raw_context.t
|
||||||
|
|
||||||
(** Frozen balance, see 'delegate_storage.mli' for more explanation *)
|
(** Frozen balance, see 'delegate_storage.mli' for more explanation *)
|
||||||
module Frozen_bonds : Indexed_data_storage
|
module Frozen_deposits : Indexed_data_storage
|
||||||
with type key = Cycle_repr.t
|
with type key = Cycle_repr.t
|
||||||
and type value = Tez_repr.t
|
and type value = Tez_repr.t
|
||||||
and type t = Raw_context.t * Contract_repr.t
|
and type t = Raw_context.t * Contract_repr.t
|
||||||
@ -236,7 +236,7 @@ module Seed : sig
|
|||||||
type unrevealed_nonce = {
|
type unrevealed_nonce = {
|
||||||
nonce_hash: Nonce_hash.t ;
|
nonce_hash: Nonce_hash.t ;
|
||||||
delegate: Ed25519.Public_key_hash.t ;
|
delegate: Ed25519.Public_key_hash.t ;
|
||||||
bond: Tez_repr.t ;
|
deposit: Tez_repr.t ;
|
||||||
rewards: Tez_repr.t ;
|
rewards: Tez_repr.t ;
|
||||||
fees: Tez_repr.t ;
|
fees: Tez_repr.t ;
|
||||||
}
|
}
|
||||||
|
@ -57,13 +57,13 @@ let test_endorsement_payment () =
|
|||||||
@@ List.nth endorsers endorser_slot in
|
@@ List.nth endorsers endorser_slot in
|
||||||
Contract.get_balance tc (Contract.implicit_contract contract_p.hpub) >>=? fun init_balance ->
|
Contract.get_balance tc (Contract.implicit_contract contract_p.hpub) >>=? fun init_balance ->
|
||||||
|
|
||||||
(* After one block, endorsement bond cost should be paid *)
|
(* After one block, endorsement deposit cost should be paid *)
|
||||||
Block.endorsement
|
Block.endorsement
|
||||||
root.tezos_header.shell root.hash
|
root.tezos_header.shell root.hash
|
||||||
root.level block_priority contract_p
|
root.level block_priority contract_p
|
||||||
root.validation.context endorser_slot
|
root.validation.context endorser_slot
|
||||||
>>=? fun result ->
|
>>=? fun result ->
|
||||||
get_balance_res contract_p result >>=? fun bond_balance ->
|
get_balance_res contract_p result >>=? fun deposit_balance ->
|
||||||
let protocol_data = Block.get_protocol_data block_priority in
|
let protocol_data = Block.get_protocol_data block_priority in
|
||||||
Proto_alpha.Baking.check_baking_rights
|
Proto_alpha.Baking.check_baking_rights
|
||||||
result.tezos_context protocol_data root.tezos_header.shell.timestamp
|
result.tezos_context protocol_data root.tezos_header.shell.timestamp
|
||||||
@ -78,7 +78,7 @@ let test_endorsement_payment () =
|
|||||||
else Tez.zero in
|
else Tez.zero in
|
||||||
let cost = Cast.tez_add endorsement_security_deposit block_security_deposit in
|
let cost = Cast.tez_add endorsement_security_deposit block_security_deposit in
|
||||||
let expected_balance = Cast.tez_sub init_balance cost in
|
let expected_balance = Cast.tez_sub init_balance cost in
|
||||||
Assert.equal_tez ~msg: __LOC__ expected_balance bond_balance ;
|
Assert.equal_tez ~msg: __LOC__ expected_balance deposit_balance ;
|
||||||
(* After one cycle, (4 blocks in test/proto_alpha/sandbox),
|
(* After one cycle, (4 blocks in test/proto_alpha/sandbox),
|
||||||
endorsement reward sould be received *)
|
endorsement reward sould be received *)
|
||||||
chain_empty_block result >>=? chain_empty_block >>=?
|
chain_empty_block result >>=? chain_empty_block >>=?
|
||||||
|
Loading…
Reference in New Issue
Block a user