github.com/intfoundation/intchain@v0.0.0-20220727031208-4316ad31ca73/core/state/statedb_forbidden.go (about)

     1  package state
     2  
     3  // ----- forbidden Set
     4  
     5  // MarkAddressForbidden adds the specified object to the dirty map
     6  //func (self *StateDB) MarkAddressForbidden(addr common.Address) {
     7  //	if _, exist := self.GetForbiddenSet()[addr]; !exist {
     8  //		self.forbiddenSet[addr] = struct{}{}
     9  //		self.forbiddenSetDirty = true
    10  //	}
    11  //}
    12  //
    13  //func (self *StateDB) GetForbiddenSet() ForbiddenSet {
    14  //	if len(self.forbiddenSet) != 0 {
    15  //		return self.forbiddenSet
    16  //	}
    17  //	// Try to get from Trie
    18  //	enc, err := self.trie.TryGet(forbiddenSetKey)
    19  //	if err != nil {
    20  //		self.setError(err)
    21  //		return nil
    22  //	}
    23  //	var value ForbiddenSet
    24  //	if len(enc) > 0 {
    25  //		err := rlp.DecodeBytes(enc, &value)
    26  //		if err != nil {
    27  //			self.setError(err)
    28  //		}
    29  //		self.forbiddenSet = value
    30  //	}
    31  //	return value
    32  //}
    33  //
    34  //func (self *StateDB) commitForbiddenSet() {
    35  //	data, err := rlp.EncodeToBytes(self.forbiddenSet)
    36  //	if err != nil {
    37  //		panic(fmt.Errorf("can't encode forbidden set : %v", err))
    38  //	}
    39  //	self.setError(self.trie.TryUpdate(forbiddenSetKey, data))
    40  //}
    41  //
    42  //func (self *StateDB) ClearForbiddenSetByAddress(addr common.Address) {
    43  //	delete(self.forbiddenSet, addr)
    44  //	self.forbiddenSetDirty = true
    45  //}
    46  //
    47  //// Store the Forbidden Address Set
    48  //
    49  //var forbiddenSetKey = []byte("ForbiddenSet")
    50  //
    51  //type ForbiddenSet map[common.Address]struct{}
    52  //
    53  //func (set ForbiddenSet) EncodeRLP(w io.Writer) error {
    54  //	var list []common.Address
    55  //	for addr := range set {
    56  //		list = append(list, addr)
    57  //	}
    58  //	sort.Slice(list, func(i, j int) bool {
    59  //		return bytes.Compare(list[i].Bytes(), list[j].Bytes()) == 1
    60  //	})
    61  //	return rlp.Encode(w, list)
    62  //}
    63  //
    64  //func (set *ForbiddenSet) DecodeRLP(s *rlp.Stream) error {
    65  //	var list []common.Address
    66  //	if err := s.Decode(&list); err != nil {
    67  //		return err
    68  //	}
    69  //	forbiddenSet := make(ForbiddenSet, len(list))
    70  //	for _, addr := range list {
    71  //		forbiddenSet[addr] = struct{}{}
    72  //	}
    73  //	*set = forbiddenSet
    74  //	return nil
    75  //}