将上链GET改成POST
This commit is contained in:
parent
608463ba0a
commit
af460222ce
@ -47,7 +47,7 @@ go run main.go
|
||||
现在,您可以访问以下API端点:
|
||||
|
||||
- **设置键值对**:
|
||||
- 方法: `POST /set?key=<key>&value=<value>`
|
||||
- 方法: `GET /set?key=<key>&value=<value>`
|
||||
- 示例: `curl "http://localhost:8080/set?key=1&value=HelloWorld"`
|
||||
|
||||
- **读取键对应的值**:
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "..\\..\\build-info\\552918350d568d854c4204b36ba87832.json"
|
||||
"buildInfo": "..\\..\\build-info\\91b748183a07fa13d3d4b0e76244d4ad.json"
|
||||
}
|
||||
|
@ -41,8 +41,8 @@
|
||||
"type": "function"
|
||||
}
|
||||
],
|
||||
"bytecode": "0x608060405234801561001057600080fd5b50610505806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063643719771461003b5780639507d39a14610057575b600080fd5b6100556004803603810190610050919061029f565b610087565b005b610071600480360381019061006c9190610276565b6100b2565b60405161007e919061032c565b60405180910390f35b8060008084815260200190815260200160002090805190602001906100ad929190610156565b505050565b606060008083815260200190815260200160002080546100d190610417565b80601f01602080910402602001604051908101604052809291908181526020018280546100fd90610417565b801561014a5780601f1061011f5761010080835404028352916020019161014a565b820191906000526020600020905b81548152906001019060200180831161012d57829003601f168201915b50505050509050919050565b82805461016290610417565b90600052602060002090601f01602090048101928261018457600085556101cb565b82601f1061019d57805160ff19168380011785556101cb565b828001600101855582156101cb579182015b828111156101ca5782518255916020019190600101906101af565b5b5090506101d891906101dc565b5090565b5b808211156101f55760008160009055506001016101dd565b5090565b600061020c6102078461037f565b61034e565b90508281526020810184848401111561022457600080fd5b61022f8482856103d5565b509392505050565b600082601f83011261024857600080fd5b81356102588482602086016101f9565b91505092915050565b600081359050610270816104b8565b92915050565b60006020828403121561028857600080fd5b600061029684828501610261565b91505092915050565b600080604083850312156102b257600080fd5b60006102c085828601610261565b925050602083013567ffffffffffffffff8111156102dd57600080fd5b6102e985828601610237565b9150509250929050565b60006102fe826103af565b61030881856103ba565b93506103188185602086016103e4565b610321816104a7565b840191505092915050565b6000602082019050818103600083015261034681846102f3565b905092915050565b6000604051905081810181811067ffffffffffffffff8211171561037557610374610478565b5b8060405250919050565b600067ffffffffffffffff82111561039a57610399610478565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b82818337600083830152505050565b60005b838110156104025780820151818401526020810190506103e7565b83811115610411576000848401525b50505050565b6000600282049050600182168061042f57607f821691505b6020821081141561044357610442610449565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6104c1816103cb565b81146104cc57600080fd5b5056fea26469706673582212206d7f7833d0a950b507d6b35ebca1baa126b3b5ef764b1cc224cac6e695550b1e64736f6c63430008000033",
|
||||
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063643719771461003b5780639507d39a14610057575b600080fd5b6100556004803603810190610050919061029f565b610087565b005b610071600480360381019061006c9190610276565b6100b2565b60405161007e919061032c565b60405180910390f35b8060008084815260200190815260200160002090805190602001906100ad929190610156565b505050565b606060008083815260200190815260200160002080546100d190610417565b80601f01602080910402602001604051908101604052809291908181526020018280546100fd90610417565b801561014a5780601f1061011f5761010080835404028352916020019161014a565b820191906000526020600020905b81548152906001019060200180831161012d57829003601f168201915b50505050509050919050565b82805461016290610417565b90600052602060002090601f01602090048101928261018457600085556101cb565b82601f1061019d57805160ff19168380011785556101cb565b828001600101855582156101cb579182015b828111156101ca5782518255916020019190600101906101af565b5b5090506101d891906101dc565b5090565b5b808211156101f55760008160009055506001016101dd565b5090565b600061020c6102078461037f565b61034e565b90508281526020810184848401111561022457600080fd5b61022f8482856103d5565b509392505050565b600082601f83011261024857600080fd5b81356102588482602086016101f9565b91505092915050565b600081359050610270816104b8565b92915050565b60006020828403121561028857600080fd5b600061029684828501610261565b91505092915050565b600080604083850312156102b257600080fd5b60006102c085828601610261565b925050602083013567ffffffffffffffff8111156102dd57600080fd5b6102e985828601610237565b9150509250929050565b60006102fe826103af565b61030881856103ba565b93506103188185602086016103e4565b610321816104a7565b840191505092915050565b6000602082019050818103600083015261034681846102f3565b905092915050565b6000604051905081810181811067ffffffffffffffff8211171561037557610374610478565b5b8060405250919050565b600067ffffffffffffffff82111561039a57610399610478565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b82818337600083830152505050565b60005b838110156104025780820151818401526020810190506103e7565b83811115610411576000848401525b50505050565b6000600282049050600182168061042f57607f821691505b6020821081141561044357610442610449565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6104c1816103cb565b81146104cc57600080fd5b5056fea26469706673582212206d7f7833d0a950b507d6b35ebca1baa126b3b5ef764b1cc224cac6e695550b1e64736f6c63430008000033",
|
||||
"bytecode": "0x608060405234801561001057600080fd5b50610505806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063643719771461003b5780639507d39a14610057575b600080fd5b6100556004803603810190610050919061029f565b610087565b005b610071600480360381019061006c9190610276565b6100b2565b60405161007e919061032c565b60405180910390f35b8060008084815260200190815260200160002090805190602001906100ad929190610156565b505050565b606060008083815260200190815260200160002080546100d190610417565b80601f01602080910402602001604051908101604052809291908181526020018280546100fd90610417565b801561014a5780601f1061011f5761010080835404028352916020019161014a565b820191906000526020600020905b81548152906001019060200180831161012d57829003601f168201915b50505050509050919050565b82805461016290610417565b90600052602060002090601f01602090048101928261018457600085556101cb565b82601f1061019d57805160ff19168380011785556101cb565b828001600101855582156101cb579182015b828111156101ca5782518255916020019190600101906101af565b5b5090506101d891906101dc565b5090565b5b808211156101f55760008160009055506001016101dd565b5090565b600061020c6102078461037f565b61034e565b90508281526020810184848401111561022457600080fd5b61022f8482856103d5565b509392505050565b600082601f83011261024857600080fd5b81356102588482602086016101f9565b91505092915050565b600081359050610270816104b8565b92915050565b60006020828403121561028857600080fd5b600061029684828501610261565b91505092915050565b600080604083850312156102b257600080fd5b60006102c085828601610261565b925050602083013567ffffffffffffffff8111156102dd57600080fd5b6102e985828601610237565b9150509250929050565b60006102fe826103af565b61030881856103ba565b93506103188185602086016103e4565b610321816104a7565b840191505092915050565b6000602082019050818103600083015261034681846102f3565b905092915050565b6000604051905081810181811067ffffffffffffffff8211171561037557610374610478565b5b8060405250919050565b600067ffffffffffffffff82111561039a57610399610478565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b82818337600083830152505050565b60005b838110156104025780820151818401526020810190506103e7565b83811115610411576000848401525b50505050565b6000600282049050600182168061042f57607f821691505b6020821081141561044357610442610449565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6104c1816103cb565b81146104cc57600080fd5b5056fea26469706673582212209a91262e849c6fd96aafc8ac34828e0be593bf3f8ec7cc5c80dcfe2ca63cb00e64736f6c63430008000033",
|
||||
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063643719771461003b5780639507d39a14610057575b600080fd5b6100556004803603810190610050919061029f565b610087565b005b610071600480360381019061006c9190610276565b6100b2565b60405161007e919061032c565b60405180910390f35b8060008084815260200190815260200160002090805190602001906100ad929190610156565b505050565b606060008083815260200190815260200160002080546100d190610417565b80601f01602080910402602001604051908101604052809291908181526020018280546100fd90610417565b801561014a5780601f1061011f5761010080835404028352916020019161014a565b820191906000526020600020905b81548152906001019060200180831161012d57829003601f168201915b50505050509050919050565b82805461016290610417565b90600052602060002090601f01602090048101928261018457600085556101cb565b82601f1061019d57805160ff19168380011785556101cb565b828001600101855582156101cb579182015b828111156101ca5782518255916020019190600101906101af565b5b5090506101d891906101dc565b5090565b5b808211156101f55760008160009055506001016101dd565b5090565b600061020c6102078461037f565b61034e565b90508281526020810184848401111561022457600080fd5b61022f8482856103d5565b509392505050565b600082601f83011261024857600080fd5b81356102588482602086016101f9565b91505092915050565b600081359050610270816104b8565b92915050565b60006020828403121561028857600080fd5b600061029684828501610261565b91505092915050565b600080604083850312156102b257600080fd5b60006102c085828601610261565b925050602083013567ffffffffffffffff8111156102dd57600080fd5b6102e985828601610237565b9150509250929050565b60006102fe826103af565b61030881856103ba565b93506103188185602086016103e4565b610321816104a7565b840191505092915050565b6000602082019050818103600083015261034681846102f3565b905092915050565b6000604051905081810181811067ffffffffffffffff8211171561037557610374610478565b5b8060405250919050565b600067ffffffffffffffff82111561039a57610399610478565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b82818337600083830152505050565b60005b838110156104025780820151818401526020810190506103e7565b83811115610411576000848401525b50505050565b6000600282049050600182168061042f57607f821691505b6020821081141561044357610442610449565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6104c1816103cb565b81146104cc57600080fd5b5056fea26469706673582212209a91262e849c6fd96aafc8ac34828e0be593bf3f8ec7cc5c80dcfe2ca63cb00e64736f6c63430008000033",
|
||||
"linkReferences": {},
|
||||
"deployedLinkReferences": {}
|
||||
}
|
||||
|
35
cache/solidity-files-cache.json
vendored
35
cache/solidity-files-cache.json
vendored
@ -35,6 +35,41 @@
|
||||
"artifacts": [
|
||||
"SimpleStorage"
|
||||
]
|
||||
},
|
||||
"D:\\202505\\block\\contracts\\SimpleStorage.sol": {
|
||||
"lastModificationDate": 1747806005792,
|
||||
"contentHash": "a252f90e96ba8ded10bc56e5f9b7d50d",
|
||||
"sourceName": "contracts/SimpleStorage.sol",
|
||||
"solcConfig": {
|
||||
"version": "0.8.0",
|
||||
"settings": {
|
||||
"optimizer": {
|
||||
"enabled": false,
|
||||
"runs": 200
|
||||
},
|
||||
"outputSelection": {
|
||||
"*": {
|
||||
"*": [
|
||||
"abi",
|
||||
"evm.bytecode",
|
||||
"evm.deployedBytecode",
|
||||
"evm.methodIdentifiers",
|
||||
"metadata"
|
||||
],
|
||||
"": [
|
||||
"ast"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"imports": [],
|
||||
"versionPragmas": [
|
||||
"^0.8.0"
|
||||
],
|
||||
"artifacts": [
|
||||
"SimpleStorage"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
34
main.go
34
main.go
@ -25,7 +25,9 @@ type SimpleStorage struct {
|
||||
contract *bind.BoundContract
|
||||
abi abi.ABI
|
||||
}
|
||||
|
||||
type Config struct {
|
||||
PrivateKey string `json:"privateKey"`
|
||||
}
|
||||
type Response struct {
|
||||
Msg string `json:"msg"`
|
||||
Data interface{} `json:"data"`
|
||||
@ -82,10 +84,6 @@ var (
|
||||
privateKey string
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
PrivateKey string `json:"privateKey"`
|
||||
}
|
||||
|
||||
func loadConfig(configPath string) (*Config, error) {
|
||||
data, err := ioutil.ReadFile(configPath)
|
||||
if err != nil {
|
||||
@ -101,10 +99,24 @@ func loadConfig(configPath string) (*Config, error) {
|
||||
|
||||
func setHandler(client *ethclient.Client, storage *SimpleStorage, privateKeyECDSA *ecdsa.PrivateKey) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
keyStr := r.URL.Query().Get("key")
|
||||
value := r.URL.Query().Get("value")
|
||||
// 确保是 POST 请求
|
||||
if r.Method != http.MethodPost {
|
||||
writeResponse(w, &Response{Msg: "error", Data: "只接受 POST 请求"})
|
||||
return
|
||||
}
|
||||
|
||||
keyUint, err := strconv.ParseUint(keyStr, 10, 64)
|
||||
// 解析 JSON 请求体
|
||||
var requestData struct {
|
||||
Key string `json:"key"`
|
||||
Value string `json:"value"`
|
||||
}
|
||||
|
||||
if err := json.NewDecoder(r.Body).Decode(&requestData); err != nil {
|
||||
writeResponse(w, &Response{Msg: "error", Data: "无效的请求数据"})
|
||||
return
|
||||
}
|
||||
|
||||
keyUint, err := strconv.ParseUint(requestData.Key, 10, 64)
|
||||
if err != nil {
|
||||
writeResponse(w, &Response{Msg: "error", Data: "无效的键值类型,必须为整数"})
|
||||
return
|
||||
@ -125,16 +137,17 @@ func setHandler(client *ethclient.Client, storage *SimpleStorage, privateKeyECDS
|
||||
|
||||
bigKey := big.NewInt(0).SetUint64(keyUint)
|
||||
|
||||
tx, err := storage.Transact(auth, "set", bigKey, value)
|
||||
tx, err := storage.Transact(auth, "set", bigKey, requestData.Value)
|
||||
if err != nil {
|
||||
writeResponse(w, &Response{Msg: "error", Data: fmt.Sprintf("设置值失败: %v", err)})
|
||||
return
|
||||
}
|
||||
|
||||
// 控制台日志打印
|
||||
log.Printf("成功发起交易,Hash: %s,键: %d,值: %s", tx.Hash().Hex(), keyUint, requestData.Value)
|
||||
writeResponse(w, &Response{Msg: "ok", Data: tx.Hash().Hex()})
|
||||
}
|
||||
}
|
||||
|
||||
func getHandler(storage *SimpleStorage) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
keyStr := r.URL.Query().Get("key")
|
||||
@ -142,7 +155,6 @@ func getHandler(storage *SimpleStorage) http.HandlerFunc {
|
||||
writeResponse(w, &Response{Msg: "error", Data: "缺少键值"})
|
||||
return
|
||||
}
|
||||
|
||||
keyUint, err := strconv.ParseUint(keyStr, 10, 64)
|
||||
if err != nil {
|
||||
writeResponse(w, &Response{Msg: "error", Data: "无效的键值类型,必须为整数"})
|
||||
|
2
package-lock.json
generated
2
package-lock.json
generated
@ -2291,6 +2291,7 @@
|
||||
"integrity": "sha512-bdM5cEGCOhDSwminryHJbRmXc1x7dPKg6Pqns3qyTwFlxsqUgxE29lsERS3PlIW1HTjoIGMUqsk1zQQwST1Yxw==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"node-gyp-build": "4.3.0"
|
||||
},
|
||||
@ -2303,6 +2304,7 @@
|
||||
"resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz",
|
||||
"integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"bin": {
|
||||
"node-gyp-build": "bin.js",
|
||||
"node-gyp-build-optional": "optional.js",
|
||||
|
Loading…
Reference in New Issue
Block a user