Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

交易发起方好像没有变化 #219

Open
yekai1003 opened this issue Jun 16, 2023 · 1 comment
Open

交易发起方好像没有变化 #219

yekai1003 opened this issue Jun 16, 2023 · 1 comment
Labels
enhancement New feature or request

Comments

@yekai1003
Copy link
Contributor

yekai1003 commented Jun 16, 2023

使用fisco-bcos版本:3.0.2
在go.mod中设置了replace github.com/FISCO-BCOS/go-sdk => ../go-sdk
调用hello合约,合约代码如下:

pragma solidity ^0.8.10;

contract hello{
    string name;
    event onset(string newname);
    constructor() public{
       name = "Hello, World!";
    }

    function get() view public returns(string memory){
        return name;
    }

    function set(string memory n) public{
	    emit onset(n);
    	name = n;
    }
}

下面是通过go调用hello的代码:

package main

import (
	"context"
	"encoding/hex"
	"log"
	"strings"

	"github.com/FISCO-BCOS/go-sdk/abi/bind"
	"github.com/FISCO-BCOS/go-sdk/client"
	"github.com/ethereum/go-ethereum/common"
)

var bcosClient *client.Client
var chainID string

/*
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"newname","type":"string"}],"name":"onset","type":"event"},{"inputs":[],"name":"get","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"n","type":"string"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"}]
abigen-0.8.11 -abi hello.abi -type hello -pkg main -out hello.go
*/

var keystr = `{"address":"6ada94d442e7a07d0a2e117f3d179516d836af44","crypto":{"cipher":"aes-128-ctr","ciphertext":"6757baea66cdf5930bf6b6036856aeba2865fb901d6b9eb0bd80708b6321ddfb","cipherparams":{"iv":"ec187901b3c382349fbe4b107d20cf24"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"d843d31a08f7b85dfdc46ca4283ae5ae6dc4c0a4632ee4d088c6cf6b42d211f9"},"mac":"23510f127694f3da17155a52845f54680b93efa92c1383f65957d10d1de4c78a"},"id":"39b43455-831e-4f92-ad9d-4527f819478d","version":3}`

func init() {

	//key:145e247e170ba3afd6ae97e88f00dbc976c2345d511b0f6713355d19d8b80b58
	privateKey, _ := hex.DecodeString("145e247e170ba3afd6ae97e88f00dbc976c2345d511b0f6713355d19d8b80b58")
	config := &client.Config{
		IsSMCrypto:  false,
		GroupID:     "group0",
		PrivateKey:  privateKey,
		Host:        "192.168.137.148",
		Port:        20200,
		TLSCaFile:   "sdk/ca.crt",
		TLSKeyFile:  "sdk/sdk.key",
		TLSCertFile: "sdk/sdk.crt"}
	cli, err := client.DialContext(context.Background(), config)
	if err != nil {
		log.Fatal(err)
	}

	bcosClient = cli
	chainID, _ = cli.GetChainID(context.Background())

}

func main() {
	contract_addr := "0xa6cdc4fed96bbf8c9c013cc19200b3c8ba95c93e"

	instance, err := NewHello(common.HexToAddress(contract_addr), bcosClient)
	if err != nil {
		log.Fatal("failed to NewHello ", err)
	}

	keyio := strings.NewReader(keystr)
	auth, err := bind.NewTransactor(keyio, "223")
	if err != nil {
		log.Panic("failed to NewTransactor:", err)
	}
	_, rtx, err := instance.Set(auth, "hello,yekai!")
	log.Printf("%+v\n", rtx)
}

打印的交易回执信息:

2023/06/16 15:12:52 {
        "blockNumber": 25,
        "contractAddress": "",
        "from": "0xfbb18d54e9ee57529cda8c7c52242efe879f064f",
        "gasUsed": "15580",
        "hash": "0x0ab22ddce6a702be0d40b4c002c4dd48705a894d6ce218d99107d06981713a2c",
        "input": "",
        "logEntries": [
                {
                        "blockNumber": "",
                        "address": "a6cdc4fed96bbf8c9c013cc19200b3c8ba95c93e",
                        "data": "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c68656c6c6f2c79656b6169210000000000000000000000000000000000000000",
                        "topics": [
                                "0xafb180742c1292ea5d67c4f6d51283ecb11e49f8389f4539bef82135d689e118"
                        ]
                }
        ],
        "message": "",
        "output": "0x",
        "status": 0,
        "to": "0xa6cdc4fed96bbf8c9c013cc19200b3c8ba95c93e",
        "transactionHash": "0x9fe099a71cc76edda55f44d9d45e68c4ef5059ccd94396df08d740e7adaf6399",
        "txReceiptProof": null,
        "version": 0
}

发现即使设置了set函数的opts,仍然使用client配置的私钥账户,也就是说预期from是0x6ada94d442e7a07d0a2e117f3d179516d836af44,结果每次都是0xfbb18d54e9ee57529cda8c7c52242efe879f064f

@bxq2011hust
Copy link
Member

3.0版本逻辑不同,创建client的时候,会把私钥传给c-sdk,目前在client的生命周期内不支持更改私钥

@bxq2011hust bxq2011hust added the enhancement New feature or request label Jun 16, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants