From ced5ddbb9e3f883c8debb7fe171c4585a8c35e86 Mon Sep 17 00:00:00 2001 From: Roman Khimov Date: Fri, 6 Mar 2020 19:18:54 +0300 Subject: [PATCH] core: fix wrong references ordering in interop function Broken by 9f7018503a12d4c6c7ae1e6e6a2835569f3bf502. Almost the same problem as in 01082a8988cf049673e1857415f08534e879b512 (though it is deterministic now, just not the way the contract expects). --- pkg/core/interop_neo.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pkg/core/interop_neo.go b/pkg/core/interop_neo.go index 7140b1fa2..1819bedd3 100644 --- a/pkg/core/interop_neo.go +++ b/pkg/core/interop_neo.go @@ -144,8 +144,13 @@ func (ic *interopContext) txGetReferences(v *vm.VM) error { } stackrefs := make([]vm.StackItem, 0, len(refs)) - for _, tio := range refs { - stackrefs = append(stackrefs, vm.NewInteropItem(tio)) + for i := range tx.Inputs { + for j := range refs { + if refs[j].In == tx.Inputs[i] { + stackrefs = append(stackrefs, vm.NewInteropItem(refs[j])) + break + } + } } v.Estack().PushVal(stackrefs) return nil