feat: add love contract
4 unresolved threads
A warm contract
74 return sdk.Error(msg) 75 } 76 77 // 构建结构体 78 love := NewLove(girl, boy, int32(time)) 79 80 // 序列化 81 loveBytes, err := json.Marshal(love) 82 if err != nil { 83 return sdk.Error(fmt.Sprintf("marshal love failed, err: %s", err)) 84 } 85 // 发送事件 86 sdk.Instance.EmitEvent("topic_vx", []string{love.Girl, love.Boy}) 87 88 // 存储数据 89 err = sdk.Instance.PutStateByte("love_bytes", love.Girl+love.Boy, loveBytes) 71 if err != nil { 72 msg := "time is [" + timeStr + "] not int" 73 sdk.Instance.Errorf(msg) 74 return sdk.Error(msg) 75 } 76 77 // 构建结构体 78 love := NewLove(girl, boy, int32(time)) 79 80 // 序列化 81 loveBytes, err := json.Marshal(love) 82 if err != nil { 83 return sdk.Error(fmt.Sprintf("marshal love failed, err: %s", err)) 84 } 85 // 发送事件 86 sdk.Instance.EmitEvent("topic_vx", []string{love.Girl, love.Boy}) 32 } 33 34 // InvokeContract the entry func of invoke contract func 35 func (f *LoveContract) InvokeContract(method string) protogo.Response { 36 switch method { 37 case "lock": 38 return f.lock() 39 case "find": 40 return f.find() 41 default: 42 return sdk.Error("invalid method") 43 } 44 } 45 46 // Love object to store 47 type Love struct { 61 } 62 63 func (f *LoveContract) lock() protogo.Response { 64 params := sdk.Instance.GetArgs() 65 66 // 获取参数 67 girl := string(params["girl"]) 68 boy := string(params["boy"]) 69 timeStr := string(params["time"]) 70 time, err := strconv.ParseInt(timeStr, 10, 0) 71 if err != nil { 72 msg := "time is [" + timeStr + "] not int" 73 sdk.Instance.Errorf(msg) 74 return sdk.Error(msg) 75 } 76