code: func (tx *Transaction) WithSignature(signer Signer, sig []byte) (*Transaction, error) {
  	r, s, v, err := signer.SignatureValues(tx, sig)
  	if err != nil {
  		return nil, err
  	}
  	cpy := &Transaction{data: tx.data}
  	cpy.data.R, cpy.data.S, cpy.data.V = r, s, v
  	return cpy, nil
  }
docs: // WithSignature returns a new transaction with the given signature.
  // This signature needs to be in the [R || S || V] format where V is 0 or 1.