github.com/unicornultrafoundation/go-u2u@v1.0.0-rc1.0.20240205080301-e74a83d3fadc/utils/signers/internaltx/internaltx.go (about)

     1  package internaltx
     2  
     3  import (
     4  	"github.com/unicornultrafoundation/go-u2u/common"
     5  	"github.com/unicornultrafoundation/go-u2u/core/types"
     6  )
     7  
     8  func IsInternal(tx *types.Transaction) bool {
     9  	v, r, _ := tx.RawSignatureValues()
    10  	return v.Sign() == 0 && r.Sign() == 0
    11  }
    12  
    13  func InternalSender(tx *types.Transaction) common.Address {
    14  	_, _, s := tx.RawSignatureValues()
    15  	return common.BytesToAddress(s.Bytes())
    16  }
    17  
    18  func Sender(signer types.Signer, tx *types.Transaction) (common.Address, error) {
    19  	if !IsInternal(tx) {
    20  		return types.Sender(signer, tx)
    21  	}
    22  	return InternalSender(tx), nil
    23  }