// safeDelete is used to delete a value in an immutable ticket treap, returning // the mutated, immutable treap given as a result. It first checks to see if // the key exists in the treap. If it does not, it returns an error. func safeDelete(t *tickettreap.Immutable, k tickettreap.Key) (*tickettreap.Immutable, error) { if !t.Has(k) { return nil, stakeRuleError(ErrMissingTicket, fmt.Sprintf("attempted to "+ "delete non-existing key %v from treap", chainhash.Hash(k))) } return t.Delete(k), nil }
// safePut is used to put a value into an immutable ticket treap, returning // the mutated, immutable treap given as a result. It first checks to see if // there is already this key in the treap. If there is, it returns an error. // TODO This function could also check to make sure the states of the ticket // treap value are valid. func safePut(t *tickettreap.Immutable, k tickettreap.Key, v *tickettreap.Value) (*tickettreap.Immutable, error) { if t.Has(k) { return nil, stakeRuleError(ErrDuplicateTicket, fmt.Sprintf("attempted "+ "to insert duplicate key %v into treap", chainhash.Hash(k))) } return t.Put(k, v), nil }