| 135 | } |
| 136 | |
| 137 | func removeController(srvc *native.NativeService) ([]byte, error) { |
| 138 | source := common.NewZeroCopySource(srvc.Input) |
| 139 | // arg0: id |
| 140 | arg0, err := utils.DecodeVarBytes(source) |
| 141 | if err != nil { |
| 142 | return utils.BYTE_FALSE, fmt.Errorf("argument 0 error") |
| 143 | } |
| 144 | // arg1: public key index |
| 145 | arg1, err := utils.DecodeVarUint(source) |
| 146 | if err != nil { |
| 147 | return utils.BYTE_FALSE, fmt.Errorf("argument 1 error") |
| 148 | } |
| 149 | encId, err := encodeID(arg0) |
| 150 | if err != nil { |
| 151 | return utils.BYTE_FALSE, err |
| 152 | } |
| 153 | if err := checkWitnessByIndex(srvc, encId, uint32(arg1)); err != nil { |
| 154 | return utils.BYTE_FALSE, fmt.Errorf("checkWitness failed, %s", err) |
| 155 | } |
| 156 | key := append(encId, FIELD_CONTROLLER) |
| 157 | srvc.CacheDB.Delete(key) |
| 158 | |
| 159 | newEvent(srvc, []interface{}{"RemoveController", string(arg0)}) |
| 160 | return utils.BYTE_TRUE, nil |
| 161 | } |
| 162 | |
| 163 | func addKeyByController(srvc *native.NativeService) ([]byte, error) { |
| 164 | source := common.NewZeroCopySource(srvc.Input) |