[#1618] pkg: Refactor user.ID.ScriptHash() usage
All checks were successful
DCO action / DCO (pull_request) Successful in 35s
Vulncheck / Vulncheck (pull_request) Successful in 51s
Build / Build Components (pull_request) Successful in 1m21s
Pre-commit hooks / Pre-commit (pull_request) Successful in 1m25s
Tests and linters / Run gofumpt (pull_request) Successful in 1m46s
Tests and linters / Staticcheck (pull_request) Successful in 1m59s
Tests and linters / Tests (pull_request) Successful in 2m3s
Tests and linters / Lint (pull_request) Successful in 3m3s
Tests and linters / gopls check (pull_request) Successful in 3m15s
Tests and linters / Tests with -race (pull_request) Successful in 3m54s

`user.ID.ScriptHash()` does not return an error anymore.

Signed-off-by: Ekaterina Lebedeva <ekaterina.lebedeva@yadro.com>
This commit is contained in:
Ekaterina Lebedeva 2025-01-28 18:49:45 +03:00
parent 713f4b144c
commit ae851b3922
6 changed files with 17 additions and 39 deletions

2
go.mod
View file

@ -8,7 +8,7 @@ require (
git.frostfs.info/TrueCloudLab/frostfs-crypto v0.6.0 git.frostfs.info/TrueCloudLab/frostfs-crypto v0.6.0
git.frostfs.info/TrueCloudLab/frostfs-locode-db v0.4.1-0.20240710074952-65761deb5c0d git.frostfs.info/TrueCloudLab/frostfs-locode-db v0.4.1-0.20240710074952-65761deb5c0d
git.frostfs.info/TrueCloudLab/frostfs-observability v0.0.0-20241112082307-f17779933e88 git.frostfs.info/TrueCloudLab/frostfs-observability v0.0.0-20241112082307-f17779933e88
git.frostfs.info/TrueCloudLab/frostfs-sdk-go v0.0.0-20250109084609-328d214d2d76 git.frostfs.info/TrueCloudLab/frostfs-sdk-go v0.0.0-20250129133430-d195cb510401
git.frostfs.info/TrueCloudLab/hrw v1.2.1 git.frostfs.info/TrueCloudLab/hrw v1.2.1
git.frostfs.info/TrueCloudLab/multinet v0.0.0-20241015075604-6cb0d80e0972 git.frostfs.info/TrueCloudLab/multinet v0.0.0-20241015075604-6cb0d80e0972
git.frostfs.info/TrueCloudLab/policy-engine v0.0.0-20240814080254-96225afacb88 git.frostfs.info/TrueCloudLab/policy-engine v0.0.0-20240814080254-96225afacb88

4
go.sum
View file

@ -8,8 +8,8 @@ git.frostfs.info/TrueCloudLab/frostfs-locode-db v0.4.1-0.20240710074952-65761deb
git.frostfs.info/TrueCloudLab/frostfs-locode-db v0.4.1-0.20240710074952-65761deb5c0d/go.mod h1:7ZZq8iguY7qFsXajdHGmZd2AW4QbucyrJwhbsRfOfek= git.frostfs.info/TrueCloudLab/frostfs-locode-db v0.4.1-0.20240710074952-65761deb5c0d/go.mod h1:7ZZq8iguY7qFsXajdHGmZd2AW4QbucyrJwhbsRfOfek=
git.frostfs.info/TrueCloudLab/frostfs-observability v0.0.0-20241112082307-f17779933e88 h1:9bvBDLApbbO5sXBKdODpE9tzy3HV99nXxkDWNn22rdI= git.frostfs.info/TrueCloudLab/frostfs-observability v0.0.0-20241112082307-f17779933e88 h1:9bvBDLApbbO5sXBKdODpE9tzy3HV99nXxkDWNn22rdI=
git.frostfs.info/TrueCloudLab/frostfs-observability v0.0.0-20241112082307-f17779933e88/go.mod h1:kbwB4v2o6RyOfCo9kEFeUDZIX3LKhmS0yXPrtvzkQ1g= git.frostfs.info/TrueCloudLab/frostfs-observability v0.0.0-20241112082307-f17779933e88/go.mod h1:kbwB4v2o6RyOfCo9kEFeUDZIX3LKhmS0yXPrtvzkQ1g=
git.frostfs.info/TrueCloudLab/frostfs-sdk-go v0.0.0-20250109084609-328d214d2d76 h1:wzvSJIiS+p9qKfl3eg1oH6qlrjaEWiqTc/iMDKG3Ml4= git.frostfs.info/TrueCloudLab/frostfs-sdk-go v0.0.0-20250129133430-d195cb510401 h1:5EN6YsbF5u2BffTKo5kVwe+Aqcy6CRTTVKcwZOI+Ym0=
git.frostfs.info/TrueCloudLab/frostfs-sdk-go v0.0.0-20250109084609-328d214d2d76/go.mod h1:aQpPWfG8oyfJ2X+FenPTJpSRWZjwcP5/RAtkW+/VEX8= git.frostfs.info/TrueCloudLab/frostfs-sdk-go v0.0.0-20250129133430-d195cb510401/go.mod h1:aQpPWfG8oyfJ2X+FenPTJpSRWZjwcP5/RAtkW+/VEX8=
git.frostfs.info/TrueCloudLab/hrw v1.2.1 h1:ccBRK21rFvY5R1WotI6LNoPlizk7qSvdfD8lNIRudVc= git.frostfs.info/TrueCloudLab/hrw v1.2.1 h1:ccBRK21rFvY5R1WotI6LNoPlizk7qSvdfD8lNIRudVc=
git.frostfs.info/TrueCloudLab/hrw v1.2.1/go.mod h1:C1Ygde2n843yTZEQ0FP69jYiuaYV0kriLvP4zm8JuvM= git.frostfs.info/TrueCloudLab/hrw v1.2.1/go.mod h1:C1Ygde2n843yTZEQ0FP69jYiuaYV0kriLvP4zm8JuvM=
git.frostfs.info/TrueCloudLab/multinet v0.0.0-20241015075604-6cb0d80e0972 h1:/960fWeyn2AFHwQUwDsWB3sbP6lTEnFnMzLMM6tx6N8= git.frostfs.info/TrueCloudLab/multinet v0.0.0-20241015075604-6cb0d80e0972 h1:/960fWeyn2AFHwQUwDsWB3sbP6lTEnFnMzLMM6tx6N8=

View file

@ -11,10 +11,7 @@ import (
// BalanceOf receives the amount of funds in the client's account // BalanceOf receives the amount of funds in the client's account
// through the Balance contract call, and returns it. // through the Balance contract call, and returns it.
func (c *Client) BalanceOf(id user.ID) (*big.Int, error) { func (c *Client) BalanceOf(id user.ID) (*big.Int, error) {
h, err := id.ScriptHash() h := id.ScriptHash()
if err != nil {
return nil, err
}
invokePrm := client.TestInvokePrm{} invokePrm := client.TestInvokePrm{}
invokePrm.SetMethod(balanceOfMethod) invokePrm.SetMethod(balanceOfMethod)

View file

@ -22,22 +22,15 @@ type TransferPrm struct {
// TransferX transfers p.Amount of GASe-12 from p.From to p.To // TransferX transfers p.Amount of GASe-12 from p.From to p.To
// with details p.Details through direct smart contract call. // with details p.Details through direct smart contract call.
func (c *Client) TransferX(ctx context.Context, p TransferPrm) error { func (c *Client) TransferX(ctx context.Context, p TransferPrm) error {
from, err := p.From.ScriptHash() from := p.From.ScriptHash()
if err != nil { to := p.To.ScriptHash()
return err
}
to, err := p.To.ScriptHash()
if err != nil {
return err
}
prm := client.InvokePrm{} prm := client.InvokePrm{}
prm.SetMethod(transferXMethod) prm.SetMethod(transferXMethod)
prm.SetArgs(from, to, p.Amount, p.Details) prm.SetArgs(from, to, p.Amount, p.Details)
prm.InvokePrmOptional = p.InvokePrmOptional prm.InvokePrmOptional = p.InvokePrmOptional
_, err = c.client.Invoke(ctx, prm) _, err := c.client.Invoke(ctx, prm)
if err != nil { if err != nil {
return fmt.Errorf("invoke method (%s): %w", transferXMethod, err) return fmt.Errorf("invoke method (%s): %w", transferXMethod, err)
} }

View file

@ -649,10 +649,7 @@ func (ac *apeChecker) namespaceByOwner(owner *refs.OwnerID) (string, error) {
if err := ownerSDK.ReadFromV2(*owner); err != nil { if err := ownerSDK.ReadFromV2(*owner); err != nil {
return "", err return "", err
} }
addr, err := ownerSDK.ScriptHash() addr := ownerSDK.ScriptHash()
if err != nil {
return "", err
}
namespace := "" namespace := ""
subject, err := ac.frostFSIDClient.GetSubject(addr) subject, err := ac.frostFSIDClient.GetSubject(addr)
@ -674,10 +671,7 @@ func (ac *apeChecker) namespaceByKnownOwner(owner *refs.OwnerID) (string, error)
if err := ownerSDK.ReadFromV2(*owner); err != nil { if err := ownerSDK.ReadFromV2(*owner); err != nil {
return "", err return "", err
} }
addr, err := ownerSDK.ScriptHash() addr := ownerSDK.ScriptHash()
if err != nil {
return "", err
}
subject, err := ac.frostFSIDClient.GetSubject(addr) subject, err := ac.frostFSIDClient.GetSubject(addr)
if err != nil { if err != nil {
return "", fmt.Errorf("get subject error: %w", err) return "", fmt.Errorf("get subject error: %w", err)

View file

@ -678,8 +678,7 @@ func testDenyPutContainerForOthersSessionToken(t *testing.T) {
testContainer := containertest.Container() testContainer := containertest.Container()
owner := testContainer.Owner() owner := testContainer.Owner()
ownerAddr, err := owner.ScriptHash() ownerAddr := owner.ScriptHash()
require.NoError(t, err)
frostfsIDSubjectReader := &frostfsidStub{ frostfsIDSubjectReader := &frostfsidStub{
subjects: map[util.Uint160]*client.Subject{ subjects: map[util.Uint160]*client.Subject{
ownerAddr: {}, ownerAddr: {},
@ -690,7 +689,7 @@ func testDenyPutContainerForOthersSessionToken(t *testing.T) {
nm.currentEpoch = 100 nm.currentEpoch = 100
nm.netmaps = map[uint64]*netmap.NetMap{} nm.netmaps = map[uint64]*netmap.NetMap{}
_, _, err = router.MorphRuleChainStorage().AddMorphRuleChain(chain.Ingress, engine.NamespaceTarget(""), &chain.Chain{ _, _, err := router.MorphRuleChainStorage().AddMorphRuleChain(chain.Ingress, engine.NamespaceTarget(""), &chain.Chain{
Rules: []chain.Rule{ Rules: []chain.Rule{
{ {
Status: chain.AccessDenied, Status: chain.AccessDenied,
@ -773,7 +772,7 @@ func testDenyPutContainerReadNamespaceFromFrostfsID(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
req := initPutRequest(t, testContainer) req := initPutRequest(t, testContainer)
ownerScriptHash := initOwnerIDScriptHash(t, testContainer) ownerScriptHash := initOwnerIDScriptHash(testContainer)
frostfsIDSubjectReader := &frostfsidStub{ frostfsIDSubjectReader := &frostfsidStub{
subjects: map[util.Uint160]*client.Subject{ subjects: map[util.Uint160]*client.Subject{
@ -857,7 +856,7 @@ func testDenyPutContainerInvalidNamespace(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
req := initPutRequest(t, testContainer) req := initPutRequest(t, testContainer)
ownerScriptHash := initOwnerIDScriptHash(t, testContainer) ownerScriptHash := initOwnerIDScriptHash(testContainer)
frostfsIDSubjectReader := &frostfsidStub{ frostfsIDSubjectReader := &frostfsidStub{
subjects: map[util.Uint160]*client.Subject{ subjects: map[util.Uint160]*client.Subject{
@ -1532,26 +1531,21 @@ func initPutRequest(t *testing.T, testContainer cnrSDK.Container) *container.Put
return req return req
} }
func initOwnerIDScriptHash(t *testing.T, testContainer cnrSDK.Container) util.Uint160 { func initOwnerIDScriptHash(testContainer cnrSDK.Container) util.Uint160 {
var ownerSDK *user.ID var ownerSDK *user.ID
owner := testContainer.Owner() owner := testContainer.Owner()
ownerSDK = &owner ownerSDK = &owner
sc, err := ownerSDK.ScriptHash() return ownerSDK.ScriptHash()
require.NoError(t, err)
return sc
} }
func initActorOwnerScriptHashes(t *testing.T, actorPK *keys.PrivateKey, ownerPK *keys.PrivateKey) (actorScriptHash util.Uint160, ownerScriptHash util.Uint160) { func initActorOwnerScriptHashes(t *testing.T, actorPK *keys.PrivateKey, ownerPK *keys.PrivateKey) (actorScriptHash util.Uint160, ownerScriptHash util.Uint160) {
var actorUserID user.ID var actorUserID user.ID
user.IDFromKey(&actorUserID, ecdsa.PublicKey(*actorPK.PublicKey())) user.IDFromKey(&actorUserID, ecdsa.PublicKey(*actorPK.PublicKey()))
var err error actorScriptHash = actorUserID.ScriptHash()
actorScriptHash, err = actorUserID.ScriptHash()
require.NoError(t, err)
var ownerUserID user.ID var ownerUserID user.ID
user.IDFromKey(&ownerUserID, ecdsa.PublicKey(*ownerPK.PublicKey())) user.IDFromKey(&ownerUserID, ecdsa.PublicKey(*ownerPK.PublicKey()))
ownerScriptHash, err = ownerUserID.ScriptHash() ownerScriptHash = ownerUserID.ScriptHash()
require.NoError(t, err)
require.NotEqual(t, ownerScriptHash.String(), actorScriptHash.String()) require.NotEqual(t, ownerScriptHash.String(), actorScriptHash.String())
return return
} }