Commit 35040615 authored by linj's avatar linj

Merge branch 'update-chain33-20190308' into token-mintage

parents 8760107b 7b8b0c12
......@@ -434,3 +434,41 @@ func genPrefixEdge(prefix []byte) (r []byte) {
return r
}
// Mint gitt铸币
func (acc *DB) Mint(addr string, amount int64) (*types.Receipt, error) {
if !types.CheckAmount(amount) {
return nil, types.ErrAmount
}
accTo := acc.LoadAccount(addr)
balance, err := safeAdd(accTo.Balance, amount)
if err != nil {
return nil, err
}
copyAcc := *accTo
accTo.Balance = balance
receipt := &types.ReceiptAccountMint{
Prev: &copyAcc,
Current: accTo,
}
kv := acc.GetKVSet(accTo)
acc.SaveKVSet(kv)
return acc.mintReceipt(kv, receipt), nil
}
func (acc *DB) mintReceipt(kv []*types.KeyValue, receipt proto.Message) *types.Receipt {
ty := int32(types.TyLogMint)
log1 := &types.ReceiptLog{
Ty: ty,
Log: types.Encode(receipt),
}
return &types.Receipt{
Ty: types.ExecOk,
KV: kv,
Logs: []*types.ReceiptLog{log1},
}
}
......@@ -554,3 +554,13 @@ func TestGetExecBalance2(t *testing.T) {
assert.Equal(t, 1, len(reply.Items))
*/
}
func TestDB_Mint(t *testing.T) {
_, tokenCoin := GenerAccDb()
tokenCoin.GenerAccData()
_, err := tokenCoin.Mint(addr1, 10*1e8)
require.NoError(t, err)
t.Logf("Token mint addr balance [%d]", tokenCoin.LoadAccount(addr1).Balance)
require.Equal(t, int64(1000*1e8+10*1e8), tokenCoin.LoadAccount(addr1).Balance)
}
......@@ -19,7 +19,7 @@ wget 127.0.0.1:8866 --no-proxy --post-data='{"id" : 1 , "method" : "ShowMinerAcc
8. expectIncrease 预期挖到多少币
9. expectMinerBlocks 预期间隔多少个块能挖到币
10. minerBtyDuring 在预期能挖到币的两倍时间间隔内,挖到多少币
11. expectTotalIncrease 一个小时内预期挖矿增加
11. expectTotalIncrease 一个小时内预期挖矿增加
需要监控
1. 挖矿总量异常: 根据总体币的挖矿情况报警 (不再根据原来的固定值)
......
......@@ -198,6 +198,56 @@ func (m *ReceiptAccountTransfer) GetCurrent() *Account {
return nil
}
//铸币账户余额增加
type ReceiptAccountMint struct {
//铸币前
Prev *Account `protobuf:"bytes,1,opt,name=prev,proto3" json:"prev,omitempty"`
//铸币后
Current *Account `protobuf:"bytes,2,opt,name=current,proto3" json:"current,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ReceiptAccountMint) Reset() { *m = ReceiptAccountMint{} }
func (m *ReceiptAccountMint) String() string { return proto.CompactTextString(m) }
func (*ReceiptAccountMint) ProtoMessage() {}
func (*ReceiptAccountMint) Descriptor() ([]byte, []int) {
return fileDescriptor_8e28828dcb8d24f0, []int{3}
}
func (m *ReceiptAccountMint) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReceiptAccountMint.Unmarshal(m, b)
}
func (m *ReceiptAccountMint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReceiptAccountMint.Marshal(b, m, deterministic)
}
func (m *ReceiptAccountMint) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReceiptAccountMint.Merge(m, src)
}
func (m *ReceiptAccountMint) XXX_Size() int {
return xxx_messageInfo_ReceiptAccountMint.Size(m)
}
func (m *ReceiptAccountMint) XXX_DiscardUnknown() {
xxx_messageInfo_ReceiptAccountMint.DiscardUnknown(m)
}
var xxx_messageInfo_ReceiptAccountMint proto.InternalMessageInfo
func (m *ReceiptAccountMint) GetPrev() *Account {
if m != nil {
return m.Prev
}
return nil
}
func (m *ReceiptAccountMint) GetCurrent() *Account {
if m != nil {
return m.Current
}
return nil
}
//查询一个地址列表在某个执行器中余额
type ReqBalance struct {
//地址列表
......@@ -216,7 +266,7 @@ func (m *ReqBalance) Reset() { *m = ReqBalance{} }
func (m *ReqBalance) String() string { return proto.CompactTextString(m) }
func (*ReqBalance) ProtoMessage() {}
func (*ReqBalance) Descriptor() ([]byte, []int) {
return fileDescriptor_8e28828dcb8d24f0, []int{3}
return fileDescriptor_8e28828dcb8d24f0, []int{4}
}
func (m *ReqBalance) XXX_Unmarshal(b []byte) error {
......@@ -284,7 +334,7 @@ func (m *Accounts) Reset() { *m = Accounts{} }
func (m *Accounts) String() string { return proto.CompactTextString(m) }
func (*Accounts) ProtoMessage() {}
func (*Accounts) Descriptor() ([]byte, []int) {
return fileDescriptor_8e28828dcb8d24f0, []int{4}
return fileDescriptor_8e28828dcb8d24f0, []int{5}
}
func (m *Accounts) XXX_Unmarshal(b []byte) error {
......@@ -324,7 +374,7 @@ func (m *ExecAccount) Reset() { *m = ExecAccount{} }
func (m *ExecAccount) String() string { return proto.CompactTextString(m) }
func (*ExecAccount) ProtoMessage() {}
func (*ExecAccount) Descriptor() ([]byte, []int) {
return fileDescriptor_8e28828dcb8d24f0, []int{5}
return fileDescriptor_8e28828dcb8d24f0, []int{6}
}
func (m *ExecAccount) XXX_Unmarshal(b []byte) error {
......@@ -371,7 +421,7 @@ func (m *AllExecBalance) Reset() { *m = AllExecBalance{} }
func (m *AllExecBalance) String() string { return proto.CompactTextString(m) }
func (*AllExecBalance) ProtoMessage() {}
func (*AllExecBalance) Descriptor() ([]byte, []int) {
return fileDescriptor_8e28828dcb8d24f0, []int{6}
return fileDescriptor_8e28828dcb8d24f0, []int{7}
}
func (m *AllExecBalance) XXX_Unmarshal(b []byte) error {
......@@ -423,7 +473,7 @@ func (m *ReqAllExecBalance) Reset() { *m = ReqAllExecBalance{} }
func (m *ReqAllExecBalance) String() string { return proto.CompactTextString(m) }
func (*ReqAllExecBalance) ProtoMessage() {}
func (*ReqAllExecBalance) Descriptor() ([]byte, []int) {
return fileDescriptor_8e28828dcb8d24f0, []int{7}
return fileDescriptor_8e28828dcb8d24f0, []int{8}
}
func (m *ReqAllExecBalance) XXX_Unmarshal(b []byte) error {
......@@ -483,6 +533,7 @@ func init() {
proto.RegisterType((*Account)(nil), "types.Account")
proto.RegisterType((*ReceiptExecAccountTransfer)(nil), "types.ReceiptExecAccountTransfer")
proto.RegisterType((*ReceiptAccountTransfer)(nil), "types.ReceiptAccountTransfer")
proto.RegisterType((*ReceiptAccountMint)(nil), "types.ReceiptAccountMint")
proto.RegisterType((*ReqBalance)(nil), "types.ReqBalance")
proto.RegisterType((*Accounts)(nil), "types.Accounts")
proto.RegisterType((*ExecAccount)(nil), "types.ExecAccount")
......@@ -493,31 +544,32 @@ func init() {
func init() { proto.RegisterFile("account.proto", fileDescriptor_8e28828dcb8d24f0) }
var fileDescriptor_8e28828dcb8d24f0 = []byte{
// 414 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x53, 0xc1, 0x6e, 0xd3, 0x40,
0x10, 0xd5, 0xc6, 0x49, 0x5d, 0x4f, 0xa0, 0x12, 0x7b, 0xa8, 0x56, 0x15, 0x15, 0x66, 0x4f, 0x3e,
0x20, 0x47, 0xc2, 0xfc, 0x40, 0x2b, 0x21, 0x71, 0x43, 0x5a, 0x38, 0xf5, 0x82, 0xd6, 0xdb, 0x09,
0x89, 0x70, 0x6d, 0x77, 0x77, 0x83, 0x08, 0x1f, 0xc0, 0x6f, 0x20, 0xf1, 0xa5, 0x68, 0x27, 0xeb,
0xc6, 0x25, 0x02, 0xe5, 0xc6, 0x2d, 0xf3, 0xde, 0xec, 0xbc, 0x37, 0x2f, 0x63, 0x78, 0xaa, 0x8d,
0xe9, 0x36, 0xad, 0x2f, 0x7b, 0xdb, 0xf9, 0x8e, 0xcf, 0xfc, 0xb6, 0x47, 0x27, 0xbf, 0x40, 0x7a,
0xb5, 0xc3, 0xf9, 0x05, 0x9c, 0x9a, 0x8d, 0xb5, 0xd8, 0x9a, 0xad, 0x60, 0x39, 0x2b, 0x66, 0xea,
0xa1, 0xe6, 0x02, 0xd2, 0x5a, 0x37, 0xba, 0x35, 0x28, 0x26, 0x39, 0x2b, 0x12, 0x35, 0x94, 0xfc,
0x1c, 0x4e, 0x96, 0xb6, 0xfb, 0x8e, 0xad, 0x48, 0x88, 0x88, 0x15, 0xe7, 0x30, 0xd5, 0xb7, 0xb7,
0x56, 0x4c, 0x73, 0x56, 0x64, 0x8a, 0x7e, 0xcb, 0x1f, 0x0c, 0x2e, 0x14, 0x1a, 0x5c, 0xf7, 0xfe,
0xed, 0x37, 0x34, 0x51, 0xf8, 0xa3, 0xd5, 0xad, 0x5b, 0xa2, 0x0d, 0x06, 0x30, 0xc0, 0xe1, 0x19,
0xa3, 0x67, 0x0f, 0x35, 0x97, 0x30, 0xed, 0x2d, 0x7e, 0x25, 0xf5, 0xf9, 0xeb, 0xb3, 0x92, 0xdc,
0x97, 0x71, 0x82, 0x22, 0x8e, 0x17, 0x90, 0xee, 0x0c, 0x7b, 0xf2, 0x72, 0xd8, 0x36, 0xd0, 0x72,
0x09, 0xe7, 0xd1, 0xc7, 0x9f, 0x1e, 0x06, 0x1d, 0x76, 0x9c, 0xce, 0xe4, 0xdf, 0x3a, 0xbf, 0x18,
0x80, 0xc2, 0xfb, 0xeb, 0x98, 0xd5, 0x73, 0xc8, 0x42, 0x0e, 0xe8, 0x1c, 0x3a, 0xc1, 0xf2, 0xa4,
0xc8, 0xd4, 0x1e, 0x08, 0x49, 0x86, 0x75, 0xd1, 0xd2, 0xd4, 0x4c, 0xc5, 0x2a, 0xbc, 0x72, 0x5e,
0x7b, 0x7c, 0xa7, 0xdd, 0x8a, 0x16, 0xcb, 0xd4, 0x1e, 0xe0, 0x97, 0x00, 0xda, 0x39, 0xf4, 0x9f,
0x42, 0x77, 0x4c, 0x3b, 0x23, 0x24, 0x44, 0xcc, 0x5f, 0xc2, 0x93, 0x1d, 0xed, 0xb6, 0x77, 0x75,
0xd7, 0x88, 0x19, 0x35, 0xcc, 0x09, 0xfb, 0x40, 0x90, 0x7c, 0x05, 0xa7, 0xd1, 0xb8, 0xe3, 0x39,
0x24, 0xda, 0x18, 0xf2, 0x76, 0xb8, 0x56, 0xa0, 0xe4, 0x7b, 0x98, 0x8f, 0xfe, 0xbb, 0x91, 0x69,
0xf6, 0xc8, 0x74, 0x01, 0x69, 0xbc, 0xb7, 0xbf, 0x65, 0x14, 0x69, 0x79, 0x03, 0x67, 0x57, 0x4d,
0x13, 0x66, 0x0e, 0x31, 0x0d, 0xa7, 0xc3, 0xf6, 0xa7, 0xc3, 0xdf, 0x3c, 0x92, 0x15, 0x13, 0x32,
0xc8, 0xe3, 0xcc, 0x11, 0xa3, 0xc6, 0x6d, 0xf2, 0x27, 0x83, 0x67, 0x0a, 0xef, 0x8f, 0x98, 0xff,
0x9f, 0xc2, 0xbf, 0x7e, 0x71, 0x73, 0xf9, 0x79, 0xed, 0x57, 0x9b, 0xba, 0x34, 0xdd, 0xdd, 0xa2,
0xaa, 0x4c, 0xbb, 0x30, 0x2b, 0xbd, 0x6e, 0xab, 0x6a, 0x41, 0xbb, 0xd5, 0x27, 0xf4, 0xb9, 0x56,
0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xf3, 0x95, 0x98, 0xa9, 0xbf, 0x03, 0x00, 0x00,
// 427 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x54, 0xcd, 0x6a, 0x14, 0x41,
0x10, 0xa6, 0xf7, 0x27, 0x9b, 0xa9, 0xd5, 0x80, 0x7d, 0x08, 0x4d, 0x30, 0x38, 0xf6, 0x69, 0x0e,
0xb2, 0x0b, 0x8e, 0x2f, 0x90, 0x80, 0xe0, 0x45, 0x84, 0xd6, 0x53, 0x2e, 0xd2, 0xd3, 0xa9, 0x75,
0x07, 0x27, 0x3d, 0x93, 0xee, 0x5e, 0x71, 0x7d, 0x00, 0x5f, 0x43, 0xf0, 0x49, 0xa5, 0x6b, 0x7b,
0xb2, 0xb3, 0x06, 0x25, 0x07, 0xc1, 0xdb, 0xd4, 0xf7, 0x55, 0xd5, 0xf7, 0x75, 0x55, 0x31, 0xf0,
0x58, 0x1b, 0xd3, 0x6e, 0x6c, 0x58, 0x74, 0xae, 0x0d, 0x2d, 0x9f, 0x86, 0x6d, 0x87, 0x5e, 0x7e,
0x86, 0xd9, 0xc5, 0x0e, 0xe7, 0x67, 0x70, 0x6c, 0x36, 0xce, 0xa1, 0x35, 0x5b, 0xc1, 0x72, 0x56,
0x4c, 0xd5, 0x5d, 0xcc, 0x05, 0xcc, 0x2a, 0xdd, 0x68, 0x6b, 0x50, 0x8c, 0x72, 0x56, 0x8c, 0x55,
0x1f, 0xf2, 0x53, 0x38, 0x5a, 0xb9, 0xf6, 0x1b, 0x5a, 0x31, 0x26, 0x22, 0x45, 0x9c, 0xc3, 0x44,
0x5f, 0x5f, 0x3b, 0x31, 0xc9, 0x59, 0x91, 0x29, 0xfa, 0x96, 0xdf, 0x19, 0x9c, 0x29, 0x34, 0x58,
0x77, 0xe1, 0xf5, 0x57, 0x34, 0x49, 0xf8, 0x83, 0xd3, 0xd6, 0xaf, 0xd0, 0x45, 0x03, 0x18, 0xe1,
0x58, 0xc6, 0xa8, 0xec, 0x2e, 0xe6, 0x12, 0x26, 0x9d, 0xc3, 0x2f, 0xa4, 0x3e, 0x7f, 0x79, 0xb2,
0x20, 0xf7, 0x8b, 0xd4, 0x41, 0x11, 0xc7, 0x0b, 0x98, 0xed, 0x0c, 0x07, 0xf2, 0x72, 0x3f, 0xad,
0xa7, 0xe5, 0x0a, 0x4e, 0x93, 0x8f, 0xdf, 0x3d, 0xf4, 0x3a, 0xec, 0x61, 0x3a, 0xa3, 0xbf, 0xeb,
0x54, 0xc0, 0x0f, 0x75, 0xde, 0xd6, 0x36, 0xfc, 0x63, 0x8d, 0x9f, 0x0c, 0x40, 0xe1, 0xed, 0x65,
0xda, 0xc7, 0x53, 0xc8, 0xe2, 0xac, 0xd1, 0x7b, 0xf4, 0x82, 0xe5, 0xe3, 0x22, 0x53, 0x7b, 0x20,
0x6e, 0x2b, 0x8e, 0x14, 0x1d, 0x75, 0xcd, 0x54, 0x8a, 0x62, 0x95, 0x0f, 0x3a, 0xe0, 0x1b, 0xed,
0xd7, 0x34, 0xbc, 0x4c, 0xed, 0x01, 0x7e, 0x0e, 0xa0, 0xbd, 0xc7, 0xf0, 0x31, 0x66, 0xa7, 0x8d,
0x66, 0x84, 0xc4, 0x35, 0xf2, 0xe7, 0xf0, 0x68, 0x47, 0xfb, 0xed, 0x4d, 0xd5, 0x36, 0x62, 0x4a,
0x09, 0x73, 0xc2, 0xde, 0x13, 0x24, 0x5f, 0xc0, 0x71, 0x32, 0xee, 0x79, 0x0e, 0x63, 0x6d, 0x0c,
0x79, 0xbb, 0xff, 0xac, 0x48, 0xc9, 0x77, 0x30, 0x1f, 0xdc, 0xc7, 0xc0, 0x34, 0x3b, 0x30, 0x5d,
0xc0, 0x2c, 0xdd, 0xf4, 0x9f, 0x66, 0x94, 0x68, 0x79, 0x05, 0x27, 0x17, 0x4d, 0x13, 0x7b, 0xf6,
0x63, 0xea, 0xcf, 0x93, 0xed, 0xcf, 0x93, 0xbf, 0x3a, 0x90, 0x15, 0x23, 0x32, 0xc8, 0x53, 0xcf,
0x01, 0xa3, 0x86, 0x69, 0xf2, 0x07, 0x83, 0x27, 0x0a, 0x6f, 0x1f, 0xd0, 0xff, 0x3f, 0x0d, 0xff,
0xf2, 0xd9, 0xd5, 0xf9, 0xa7, 0x3a, 0xac, 0x37, 0xd5, 0xc2, 0xb4, 0x37, 0xcb, 0xb2, 0x34, 0x76,
0x69, 0xd6, 0xba, 0xb6, 0x65, 0xb9, 0xa4, 0xb7, 0x55, 0x47, 0xf4, 0x4b, 0x28, 0x7f, 0x05, 0x00,
0x00, 0xff, 0xff, 0x1b, 0xce, 0xc2, 0x14, 0x23, 0x04, 0x00, 0x00,
}
......@@ -103,6 +103,7 @@ const (
TyLogGenesisTransfer = 11
TyLogGenesisDeposit = 12
TyLogRollback = 13
TyLogMint = 14
)
//SystemLog 系统log日志
......
......@@ -33,6 +33,14 @@ message ReceiptAccountTransfer {
Account current = 2;
}
//铸币账户余额增加
message ReceiptAccountMint {
//铸币前
Account prev = 1;
//铸币后
Account current = 2;
}
//查询一个地址列表在某个执行器中余额
message ReqBalance {
//地址列表
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment