mirror of
https://github.com/fluencelabs/tendermint
synced 2025-04-25 14:52:17 +00:00
abci: Remove old repo docs
This commit is contained in:
parent
77573a1bad
commit
02e5cbaa07
@ -1,19 +0,0 @@
|
||||
# top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
# Unix-style newlines with a newline ending every file
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[Makefile]
|
||||
indent_style = tab
|
||||
|
||||
[*.sh]
|
||||
indent_style = tab
|
||||
|
||||
[*.proto]
|
||||
indent_style = space
|
||||
indent_size = 2
|
@ -1,352 +0,0 @@
|
||||
# Changelog
|
||||
|
||||
## 0.12.0
|
||||
|
||||
*2018-06-12*
|
||||
|
||||
BREAKING CHANGES:
|
||||
|
||||
- [abci-cli] Change rpc port from 46658 to 26658.
|
||||
- [examples] Change rpc port from 46658 to 26658.
|
||||
|
||||
## 0.11.0
|
||||
|
||||
*June 6, 2018*
|
||||
|
||||
BREAKING CHANGES:
|
||||
|
||||
- [example/dummy] Remove. See example/kvstore
|
||||
- [types] Upgrade many messages:
|
||||
- RequestInitChain takes all fields from a Genesis file
|
||||
- RequestBeginBlock provides a list of all validators and whether or not
|
||||
they signed
|
||||
- Header: remove some fields, add proposer
|
||||
- BlockID, PartSetHeader: remove
|
||||
- Validator: includes address
|
||||
- PubKey: new message with `type` and `data`
|
||||
- Evidence: add type and more fields
|
||||
|
||||
FEATURES:
|
||||
|
||||
- [types] Add some fields
|
||||
- ResponseInitChain includes ConsensusParams and Validators
|
||||
- ResponseBeginBlock includes tags
|
||||
- ResponseEndBlock includes tags
|
||||
|
||||
## 0.10.3 (April 9, 2018)
|
||||
|
||||
IMPROVEMENTS:
|
||||
|
||||
- Update tmlibs dep
|
||||
|
||||
## 0.10.2 (March 23, 2018)
|
||||
|
||||
Hot fix to remove `omitempty` from `fee` and to actually run `make
|
||||
protoc`
|
||||
|
||||
## 0.10.1 (March 22, 2018)
|
||||
|
||||
FEATURES:
|
||||
|
||||
- [types] ResponseCheckTx and ResponseDeliverTx are now the same.
|
||||
- [example] `dummy` is duplicated as `kvstore`.
|
||||
|
||||
IMPROVEMENTS:
|
||||
|
||||
- glide -> Godep
|
||||
- remove pkg/errors
|
||||
- improve specification.rst
|
||||
|
||||
## 0.10.0 (February 20, 2018)
|
||||
|
||||
BREAKING CHANGES:
|
||||
|
||||
- [types] Socket messages are length prefixed with real protobuf Varint instead of `<len of len><big endian len>`
|
||||
- [types] Drop gogo custom type magic with data.Bytes
|
||||
- [types] Use `[(gogoproto.nullable)=false]` to prefer value over pointer for the types
|
||||
- [types] Field re-ordering ...
|
||||
- [types] KVPair: replace with common.KVPair. Add common KI64Pair too (for fees).
|
||||
- [types] CheckTx/DeliverTx: updates for tags, gas, fees
|
||||
- [types] Commit: Remove code and log from Commit
|
||||
- [types] SetOption: Remove code
|
||||
- [example/dummy] remove dependence on IAVL
|
||||
- [types] IsOk/IsErr: methods removed
|
||||
|
||||
FEATURES:
|
||||
|
||||
- [types] SetOption/Query/CheckTx/DeliverTx: Add `info string` field to responses
|
||||
- [types] RequestInitChain.AppStateBytes for app's genesis state
|
||||
|
||||
IMPROVEMENTS:
|
||||
|
||||
- [all] remove go-wire and go-crypto dependencies :)
|
||||
|
||||
## 0.9.0 (December 28, 2017)
|
||||
|
||||
BREAKING CHANGES:
|
||||
- [types] Id -> ID
|
||||
- [types] ResponseEndBlock: renamed Diffs field to ValidatorUpdates
|
||||
- [types] changed protobuf field indices for Request and Response oneof types
|
||||
|
||||
FEATURES:
|
||||
- [types] ResponseEndBlock: added ConsensusParamUpdates
|
||||
|
||||
BUG FIXES:
|
||||
- [cmd] fix console and batch commands to use a single persistent connection
|
||||
|
||||
## 0.8.0 (December 6, 2017)
|
||||
|
||||
BREAKING CHANGES:
|
||||
- [client] all XxxSync methods now return (ResponseXxx, error)
|
||||
- [types] all methods on Application interface now take RequestXxx and return (ResponseXxx, error).
|
||||
- Except `CheckTx`/`DeliverTx`, which takes a `tx []byte` argument.
|
||||
- Except `Commit`, which takes no arguments.
|
||||
- [types] removed Result and ResultQuery
|
||||
- [types] removed CodeType - only `0 == OK` is defined here, everything else is left to convention at the application level
|
||||
- [types] switched to using `gogo/protobuf` for code generation
|
||||
- [types] use `customtype` feature of `gogo/protobuf` to replace `[]byte` with `data.Bytes` in all generated types :)
|
||||
- this eliminates the need for additional types like ResultQuery
|
||||
- [types] `pubKey` -> `pub_key`
|
||||
- [types] `uint64` -> `int32` for `Header.num_txs` and `PartSetHeader.total`
|
||||
- [types] `uint64` -> `int64` for everything else
|
||||
- [types] ResponseSetOption includes error code
|
||||
- [abci-cli] codes are printed as their number instead of a message, except for `code == 0`, which is still printed as `OK`
|
||||
|
||||
FEATURES:
|
||||
- [types] ResponseDeliverTx: added `tags` field
|
||||
- [types] ResponseCheckTx: added `gas` and `fee` fields
|
||||
- [types] RequestBeginBlock: added `absent_validators` and `byzantine_validators` fields
|
||||
- [dummy] DeliverTx returns an owner tag and a key tag
|
||||
- [abci-cli] added `log_level` flag to control the logger
|
||||
- [abci-cli] introduce `abci-cli test` command for simple testing of ABCI server implementations via Counter application
|
||||
|
||||
## 0.7.1 (November 14, 2017)
|
||||
|
||||
IMPROVEMENTS:
|
||||
- [cli] added version command
|
||||
|
||||
BUG FIXES:
|
||||
- [server] fix "Connection error module=abci-server error=EOF"
|
||||
|
||||
## 0.7.0 (October 27, 2017)
|
||||
|
||||
BREAKING CHANGES:
|
||||
- [cli] consolidate example apps under a single `abci-cli` binary
|
||||
|
||||
IMPROVEMENTS:
|
||||
- [cli] use spf13/cobra instead of urfave/cli
|
||||
- [dummy] use iavl instead of merkleeyes, and add support for historical queries
|
||||
|
||||
BUG FIXES:
|
||||
- [client] fix deadlock on StopForError
|
||||
|
||||
## 0.6.0 (September 22, 2017)
|
||||
|
||||
BREAKING CHANGES:
|
||||
|
||||
- [types/client] app.BeginBlock takes RequestBeginBlock
|
||||
- [types/client] app.InitChain takes RequestInitChain
|
||||
- [types/client] app.Info takes RequestInfo
|
||||
|
||||
IMPROVEMENTS:
|
||||
|
||||
- various linting
|
||||
|
||||
## 0.5.0 (May 18, 2017)
|
||||
|
||||
BREAKING CHANGES:
|
||||
|
||||
- `NewSocketClient` and `NewGRPCClient` no longer start the client automatically, and don't return errors. The caller is responsible for running `client.Start()` and checking the error.
|
||||
- `NewSocketServer` and `NewGRPCServer` no longer start the server automatically, and don't return errors. The caller is responsible for running `server.Start()` and checking the error.
|
||||
|
||||
|
||||
FEATURES:
|
||||
|
||||
- [types] new method `func (res Result) IsSameCode(compare Result) bool` checks whether two results have the same code
|
||||
- [types] new methods `func (r *ResponseCheckTx) Result() Result` and `func (r *ResponseDeliverTx) Result() Result` to convert from protobuf types (for control over json serialization)
|
||||
- [types] new method `func (r *ResponseQuery) Result() *ResultQuery` and struct `ResultQuery` to convert from protobuf types (for control over json serializtion)
|
||||
|
||||
IMPROVEMENTS:
|
||||
|
||||
- Update imports for new `tmlibs` repository
|
||||
- Use the new logger
|
||||
- [abci-cli] Add flags to the query command for `path`, `height`, and `prove`
|
||||
- [types] use `data.Bytes` and `json` tags in the `Result` struct
|
||||
|
||||
BUG FIXES:
|
||||
|
||||
## 0.4.1 (April 18, 2017)
|
||||
|
||||
IMPROVEMENTS:
|
||||
|
||||
- Update dependencies
|
||||
|
||||
## 0.4.0 (March 6, 2017)
|
||||
|
||||
BREAKING CHANGES:
|
||||
|
||||
- Query takes RequestQuery and returns ResponseQuery. The request is split into `data` and `path`,
|
||||
can specify a height to query the state from, and whether or not the response should come with a proof.
|
||||
The response returns the corresponding key-value pair, with proof if requested.
|
||||
|
||||
```
|
||||
message RequestQuery{
|
||||
bytes data = 1;
|
||||
string path = 2;
|
||||
uint64 height = 3;
|
||||
bool prove = 4;
|
||||
}
|
||||
|
||||
message ResponseQuery{
|
||||
CodeType code = 1;
|
||||
int64 index = 2;
|
||||
bytes key = 3;
|
||||
bytes value = 4;
|
||||
bytes proof = 5;
|
||||
uint64 height = 6;
|
||||
string log = 7;
|
||||
}
|
||||
```
|
||||
|
||||
IMPROVEMENTS:
|
||||
|
||||
- Updates to Makefile
|
||||
- Various cleanup
|
||||
- BaseApplication can be embedded by new apps to avoid implementing empty methods
|
||||
- Drop BlockchainAware and make BeginBlock/EndBlock part of the `type Application interface`
|
||||
|
||||
## 0.3.0 (January 12, 2017)
|
||||
|
||||
BREAKING CHANGES:
|
||||
|
||||
- TMSP is now ABCI (Application/Asynchronous/A BlockChain Interface or Atomic BroadCast Interface)
|
||||
- AppendTx is now DeliverTx (conforms to the literature)
|
||||
- BeginBlock takes a Header:
|
||||
|
||||
```
|
||||
message RequestBeginBlock{
|
||||
bytes hash = 1;
|
||||
Header header = 2;
|
||||
}
|
||||
```
|
||||
|
||||
- Info returns a ResponseInfo, containing last block height and app hash:
|
||||
|
||||
```
|
||||
message ResponseInfo {
|
||||
string data = 1;
|
||||
string version = 2;
|
||||
uint64 last_block_height = 3;
|
||||
bytes last_block_app_hash = 4;
|
||||
}
|
||||
```
|
||||
|
||||
- EndBlock returns a ResponseEndBlock, containing the changed validators:
|
||||
|
||||
```
|
||||
message ResponseEndBlock{
|
||||
repeated Validator diffs = 4;
|
||||
}
|
||||
```
|
||||
|
||||
- Hex strings are 0x-prefixed in the CLI
|
||||
- Query on the Dummy app now uses hex-strings
|
||||
|
||||
FEATURES:
|
||||
|
||||
- New app, PersistentDummy, uses Info/BeginBlock to recover from failures and supports validator set changes
|
||||
- New message types for blockchain data:
|
||||
|
||||
```
|
||||
//----------------------------------------
|
||||
// Blockchain Types
|
||||
|
||||
message Header {
|
||||
string chain_id = 1;
|
||||
uint64 height = 2;
|
||||
uint64 time = 3;
|
||||
uint64 num_txs = 4;
|
||||
BlockID last_block_id = 5;
|
||||
bytes last_commit_hash = 6;
|
||||
bytes data_hash = 7;
|
||||
bytes validators_hash = 8;
|
||||
bytes app_hash = 9;
|
||||
}
|
||||
|
||||
message BlockID {
|
||||
bytes hash = 1;
|
||||
PartSetHeader parts = 2;
|
||||
}
|
||||
|
||||
message PartSetHeader {
|
||||
uint64 total = 1;
|
||||
bytes hash = 2;
|
||||
}
|
||||
|
||||
message Validator {
|
||||
bytes pubKey = 1;
|
||||
uint64 power = 2;
|
||||
}
|
||||
```
|
||||
|
||||
- Add support for Query to Counter app
|
||||
|
||||
IMPROVEMENT:
|
||||
|
||||
- Don't exit the tmsp-cli console on bad args
|
||||
|
||||
BUG FIXES:
|
||||
|
||||
- Fix parsing in the Counter app to handle invalid transactions
|
||||
|
||||
|
||||
## 0.2.1 (September 12, 2016)
|
||||
|
||||
IMPROVEMENTS
|
||||
|
||||
- Better error handling in console
|
||||
|
||||
|
||||
## 0.2.0 (July 23, 2016)
|
||||
|
||||
BREAKING CHANGES:
|
||||
|
||||
- Use `oneof` types in protobuf
|
||||
|
||||
FEATURES:
|
||||
|
||||
- GRPC support
|
||||
|
||||
|
||||
## PreHistory
|
||||
|
||||
##### Mar 26h, 2016
|
||||
* Introduce BeginBlock
|
||||
|
||||
##### Mar 6th, 2016
|
||||
|
||||
* Added InitChain, EndBlock
|
||||
|
||||
##### Feb 14th, 2016
|
||||
|
||||
* s/GetHash/Commit/g
|
||||
* Document Protobuf request/response fields
|
||||
|
||||
##### Jan 23th, 2016
|
||||
|
||||
* Added CheckTx/Query ABCI message types
|
||||
* Added Result/Log fields to DeliverTx/CheckTx/SetOption
|
||||
* Removed Listener messages
|
||||
* Removed Code from ResponseSetOption and ResponseGetHash
|
||||
* Made examples BigEndian
|
||||
|
||||
##### Jan 12th, 2016
|
||||
|
||||
* Added "RetCodeBadNonce = 0x06" return code
|
||||
|
||||
##### Jan 8th, 2016
|
||||
|
||||
* Tendermint/ABCI now comes to consensus on the order first before DeliverTx.
|
||||
|
||||
|
||||
|
213
abci/Gopkg.lock
generated
213
abci/Gopkg.lock
generated
@ -1,213 +0,0 @@
|
||||
# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
|
||||
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/davecgh/go-spew"
|
||||
packages = ["spew"]
|
||||
revision = "346938d642f2ec3594ed81d874461961cd0faa76"
|
||||
version = "v1.1.0"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/go-kit/kit"
|
||||
packages = [
|
||||
"log",
|
||||
"log/level",
|
||||
"log/term"
|
||||
]
|
||||
revision = "4dc7be5d2d12881735283bcab7352178e190fc71"
|
||||
version = "v0.6.0"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/go-logfmt/logfmt"
|
||||
packages = ["."]
|
||||
revision = "390ab7935ee28ec6b286364bba9b4dd6410cb3d5"
|
||||
version = "v0.3.0"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/go-stack/stack"
|
||||
packages = ["."]
|
||||
revision = "259ab82a6cad3992b4e21ff5cac294ccb06474bc"
|
||||
version = "v1.7.0"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/gogo/protobuf"
|
||||
packages = [
|
||||
"gogoproto",
|
||||
"jsonpb",
|
||||
"proto",
|
||||
"protoc-gen-gogo/descriptor",
|
||||
"sortkeys",
|
||||
"types"
|
||||
]
|
||||
revision = "1adfc126b41513cc696b209667c8656ea7aac67c"
|
||||
version = "v1.0.0"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/golang/protobuf"
|
||||
packages = [
|
||||
"proto",
|
||||
"ptypes",
|
||||
"ptypes/any",
|
||||
"ptypes/duration",
|
||||
"ptypes/timestamp"
|
||||
]
|
||||
revision = "925541529c1fa6821df4e44ce2723319eb2be768"
|
||||
version = "v1.0.0"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
name = "github.com/golang/snappy"
|
||||
packages = ["."]
|
||||
revision = "553a641470496b2327abcac10b36396bd98e45c9"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/inconshreveable/mousetrap"
|
||||
packages = ["."]
|
||||
revision = "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75"
|
||||
version = "v1.0"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
name = "github.com/jmhodges/levigo"
|
||||
packages = ["."]
|
||||
revision = "c42d9e0ca023e2198120196f842701bb4c55d7b9"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
name = "github.com/kr/logfmt"
|
||||
packages = ["."]
|
||||
revision = "b84e30acd515aadc4b783ad4ff83aff3299bdfe0"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/pkg/errors"
|
||||
packages = ["."]
|
||||
revision = "645ef00459ed84a119197bfb8d8205042c6df63d"
|
||||
version = "v0.8.0"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/pmezard/go-difflib"
|
||||
packages = ["difflib"]
|
||||
revision = "792786c7400a136282c1664665ae0a8db921c6c2"
|
||||
version = "v1.0.0"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/spf13/cobra"
|
||||
packages = ["."]
|
||||
revision = "a1f051bc3eba734da4772d60e2d677f47cf93ef4"
|
||||
version = "v0.0.2"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/spf13/pflag"
|
||||
packages = ["."]
|
||||
revision = "e57e3eeb33f795204c1ca35f56c44f83227c6e66"
|
||||
version = "v1.0.0"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/stretchr/testify"
|
||||
packages = [
|
||||
"assert",
|
||||
"require"
|
||||
]
|
||||
revision = "12b6f73e6084dad08a7c6e575284b177ecafbc71"
|
||||
version = "v1.2.1"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
name = "github.com/syndtr/goleveldb"
|
||||
packages = [
|
||||
"leveldb",
|
||||
"leveldb/cache",
|
||||
"leveldb/comparer",
|
||||
"leveldb/errors",
|
||||
"leveldb/filter",
|
||||
"leveldb/iterator",
|
||||
"leveldb/journal",
|
||||
"leveldb/memdb",
|
||||
"leveldb/opt",
|
||||
"leveldb/storage",
|
||||
"leveldb/table",
|
||||
"leveldb/util"
|
||||
]
|
||||
revision = "714f901b98fdb3aa954b4193d8cbd64a28d80cad"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/tendermint/tmlibs"
|
||||
packages = [
|
||||
"common",
|
||||
"db",
|
||||
"log"
|
||||
]
|
||||
revision = "2e24b64fc121dcdf1cabceab8dc2f7257675483c"
|
||||
version = "v0.8.1"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
name = "golang.org/x/net"
|
||||
packages = [
|
||||
"context",
|
||||
"http2",
|
||||
"http2/hpack",
|
||||
"idna",
|
||||
"internal/timeseries",
|
||||
"lex/httplex",
|
||||
"trace"
|
||||
]
|
||||
revision = "61147c48b25b599e5b561d2e9c4f3e1ef489ca41"
|
||||
|
||||
[[projects]]
|
||||
name = "golang.org/x/text"
|
||||
packages = [
|
||||
"collate",
|
||||
"collate/build",
|
||||
"internal/colltab",
|
||||
"internal/gen",
|
||||
"internal/tag",
|
||||
"internal/triegen",
|
||||
"internal/ucd",
|
||||
"language",
|
||||
"secure/bidirule",
|
||||
"transform",
|
||||
"unicode/bidi",
|
||||
"unicode/cldr",
|
||||
"unicode/norm",
|
||||
"unicode/rangetable"
|
||||
]
|
||||
revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0"
|
||||
version = "v0.3.0"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
name = "google.golang.org/genproto"
|
||||
packages = ["googleapis/rpc/status"]
|
||||
revision = "ce84044298496ef4b54b4a0a0909ba593cc60e30"
|
||||
|
||||
[[projects]]
|
||||
name = "google.golang.org/grpc"
|
||||
packages = [
|
||||
".",
|
||||
"balancer",
|
||||
"codes",
|
||||
"connectivity",
|
||||
"credentials",
|
||||
"grpclb/grpc_lb_v1/messages",
|
||||
"grpclog",
|
||||
"internal",
|
||||
"keepalive",
|
||||
"metadata",
|
||||
"naming",
|
||||
"peer",
|
||||
"resolver",
|
||||
"stats",
|
||||
"status",
|
||||
"tap",
|
||||
"transport"
|
||||
]
|
||||
revision = "5b3c4e850e90a4cf6a20ebd46c8b32a0a3afcb9e"
|
||||
version = "v1.7.5"
|
||||
|
||||
[solve-meta]
|
||||
analyzer-name = "dep"
|
||||
analyzer-version = 1
|
||||
inputs-digest = "e42d4a691fb0d0db9c717394e580dd00b36ba9e185541f99fc56689338470123"
|
||||
solver-name = "gps-cdcl"
|
||||
solver-version = 1
|
@ -1,56 +0,0 @@
|
||||
# Gopkg.toml example
|
||||
#
|
||||
# Refer to https://github.com/golang/dep/blob/master/docs/Gopkg.toml.md
|
||||
# for detailed Gopkg.toml documentation.
|
||||
#
|
||||
# required = ["github.com/user/thing/cmd/thing"]
|
||||
# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]
|
||||
#
|
||||
# [[constraint]]
|
||||
# name = "github.com/user/project"
|
||||
# version = "1.0.0"
|
||||
#
|
||||
# [[constraint]]
|
||||
# name = "github.com/user/project2"
|
||||
# branch = "dev"
|
||||
# source = "github.com/myfork/project2"
|
||||
#
|
||||
# [[override]]
|
||||
# name = "github.com/x/y"
|
||||
# version = "2.4.0"
|
||||
#
|
||||
# [prune]
|
||||
# non-go = false
|
||||
# go-tests = true
|
||||
# unused-packages = true
|
||||
|
||||
# NOTE if not specified, dep automatically adds `^` to each version,
|
||||
# meaning it will accept up to the next version for the first non-zero
|
||||
# element in the version.
|
||||
#
|
||||
# So `version = "1.3.2"` means `1.3.2 <= version < 2.0.0`.
|
||||
# Use `~` for only minor version bumps.
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/gogo/protobuf"
|
||||
version = "~1.0.0"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/spf13/cobra"
|
||||
version = "~0.0.1"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/stretchr/testify"
|
||||
version = "~1.2.1"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/tendermint/tmlibs"
|
||||
version = "0.8.1"
|
||||
|
||||
[[constraint]]
|
||||
name = "google.golang.org/grpc"
|
||||
version = "~1.7.3"
|
||||
|
||||
[prune]
|
||||
go-tests = true
|
||||
unused-packages = true
|
Loading…
x
Reference in New Issue
Block a user