@@ -53,7 +53,7 @@ func ConnectToProvider(key *keystore.Key, zkPODEXAddr string, Log ILogger) error
53
53
return nil
54
54
}
55
55
56
- func publishDataToContract (b Bulletin , value int64 ) (string , error ) {
56
+ func publishPlainDataToContract (b Bulletin , value int64 ) (string , error ) {
57
57
58
58
size , _ := strconv .ParseUint (b .Size , 10 , 64 )
59
59
s , _ := strconv .ParseUint (b .S , 10 , 64 )
@@ -76,6 +76,34 @@ func publishDataToContract(b Bulletin, value int64) (string, error) {
76
76
return ctx .Hash ().Hex (), nil
77
77
}
78
78
79
+ func publishTableDataToContract (b Bulletin , value int64 ) (string , error ) {
80
+
81
+ s , _ := strconv .ParseUint (b .S , 10 , 64 )
82
+ n , _ := strconv .ParseUint (b .N , 10 , 64 )
83
+ mklrootInt := new (big.Int )
84
+ mklroot , rs := mklrootInt .SetString (b .SigmaMKLRoot , 16 )
85
+ if ! rs {
86
+ return "" , errors .New ("failed to convert sessionId" )
87
+ }
88
+
89
+ digestInt := new (big.Int )
90
+ digest , rs := digestInt .SetString (b .VRFMetaDigest , 16 )
91
+ if ! rs {
92
+ return "" , errors .New ("failed to convert VRFMetaDigest" )
93
+ }
94
+
95
+ GAdminAuth .Value = big .NewInt (value )
96
+ defer func () {
97
+ GAdminAuth .Value = big .NewInt (0 )
98
+ }()
99
+
100
+ ctx , err := ZkPoDExchangeClient .ZkPoDExchangeTransactor .Publish (GAdminAuth , 0 , s , n , mklroot , digest , big .NewInt (1 ))
101
+ if err != nil {
102
+ return "" , fmt .Errorf ("failed to Publish: %v" , err )
103
+ }
104
+ return ctx .Hash ().Hex (), nil
105
+ }
106
+
79
107
func closeDataAtContract (bltByte [32 ]byte ) (string , bool , error ) {
80
108
81
109
ctx , err := ZkPoDExchangeClient .ZkPoDExchangeTransactor .UnPublish (GAdminAuth , bltByte )
@@ -799,29 +827,46 @@ func checkDeposit(AliceAddr string, BobAddr string, value int64) (bool, error) {
799
827
}
800
828
801
829
func calcuBltKey (b Bulletin ) ([32 ]byte , error ) {
802
- size , _ := strconv .ParseUint (b .Size , 10 , 64 )
803
- s , _ := strconv .ParseUint (b .S , 10 , 64 )
804
- n , _ := strconv .ParseUint (b .N , 10 , 64 )
805
- mklrootInt := new (big.Int )
806
- mklroot , rs := mklrootInt .SetString (fmt .Sprintf ("%x" , b .SigmaMKLRoot ), 10 )
807
- if ! rs {
808
- return * byte32 (nil ), fmt .Errorf ("failed to convert sessionId. b.SigmaMKLRoot=%v" , b .SigmaMKLRoot )
809
- }
810
-
811
- bltByte := solsha3 .SoliditySHA3 (
812
- // types
813
- []string {"uint64" , "uint64" , "uint64" , "bytes32" },
814
830
815
- // values
816
- []interface {}{
817
- size ,
818
- s ,
819
- n ,
820
- mklroot ,
821
- },
822
- )
823
-
824
- return * byte32 (bltByte ), nil
831
+ if b .Mode == TRANSACTION_MODE_PLAIN_POD {
832
+ size , _ := strconv .ParseUint (b .Size , 10 , 64 )
833
+ s , _ := strconv .ParseUint (b .S , 10 , 64 )
834
+ n , _ := strconv .ParseUint (b .N , 10 , 64 )
835
+
836
+ bltByte := solsha3 .SoliditySHA3 (
837
+ // types
838
+ []string {"uint64" , "uint64" , "uint64" , "bytes32" },
839
+
840
+ // values
841
+ []interface {}{
842
+ size ,
843
+ s ,
844
+ n ,
845
+ "0x" + b .SigmaMKLRoot ,
846
+ },
847
+ )
848
+ return * byte32 (bltByte ), nil
849
+
850
+ } else if b .Mode == TRANSACTION_MODE_TABLE_POD {
851
+ s , _ := strconv .ParseUint (b .S , 10 , 64 )
852
+ n , _ := strconv .ParseUint (b .N , 10 , 64 )
853
+
854
+ bltByte := solsha3 .SoliditySHA3 (
855
+ // types
856
+ []string {"uint64" , "uint64" , "bytes32" , "bytes32" },
857
+
858
+ // values
859
+ []interface {}{
860
+ s ,
861
+ n ,
862
+ "0x" + b .SigmaMKLRoot ,
863
+ "0x" + b .VRFMetaDigest ,
864
+ },
865
+ )
866
+ return * byte32 (bltByte ), nil
867
+
868
+ }
869
+ return * byte32 (nil ), fmt .Errorf ("invalid mode=%v" , b .Mode )
825
870
}
826
871
827
872
func byte32 (s []byte ) (a * [32 ]byte ) {
0 commit comments