@@ -27,48 +27,48 @@ class ReputationSpec extends AnyFunSuite {
27
27
val (htlcId1, htlcId2, htlcId3, htlcId4, htlcId5, htlcId6, htlcId7) = (HtlcId (randomBytes32(), 1 ), HtlcId (randomBytes32(), 2 ), HtlcId (randomBytes32(), 3 ), HtlcId (randomBytes32(), 4 ), HtlcId (randomBytes32(), 5 ), HtlcId (randomBytes32(), 6 ), HtlcId (randomBytes32(), 7 ))
28
28
29
29
test(" basic" ) {
30
- val r0 = Reputation .init(Config (enabled = true , 1 day, 1 second, 2 ))
31
- assert(r0 .getConfidence(10000 msat) == 0 )
32
- val r1 = r0 .attempt(htlcId1, 10000 msat)
33
- val r2 = r1 .record(htlcId1, isSuccess = true )
34
- val r3 = r2 .attempt(htlcId2, 10000 msat)
35
- assert(r2 .getConfidence(10000 msat) === (1.0 / 3 ) +- 0.001 )
36
- val r4 = r3 .attempt(htlcId3, 10000 msat)
37
- assert(r3 .getConfidence(10000 msat) === (1.0 / 5 ) +- 0.001 )
38
- val r5 = r4 .record(htlcId2, isSuccess = true )
39
- val r6 = r5 .record(htlcId3, isSuccess = true )
40
- val r7 = r6 .attempt(htlcId4, 1 msat)
41
- assert(r6 .getConfidence(1 msat) === 1.0 +- 0.001 )
42
- val r8 = r7 .attempt(htlcId5, 40000 msat)
43
- assert(r7 .getConfidence(40000 msat) === (3.0 / 11 ) +- 0.001 )
44
- val r9 = r8 .attempt(htlcId6, 10000 msat)
45
- assert(r8 .getConfidence(10000 msat) === (3.0 / 13 ) +- 0.001 )
46
- val r10 = r9 .record(htlcId6, isSuccess = false )
47
- assert(r10 .getConfidence(10000 msat) === (3.0 / 13 ) +- 0.001 )
30
+ val r = Reputation .init(Config (enabled = true , 1 day, 1 second, 2 ))
31
+ assert(r .getConfidence(10000 msat, 0 ) == 0 )
32
+ r .attempt(htlcId1, 10000 msat, 0 )
33
+ r .record(htlcId1, isSuccess = true )
34
+ r .attempt(htlcId2, 10000 msat, 0 )
35
+ assert(r .getConfidence(10000 msat, 0 ) === (1.0 / 3 ) +- 0.001 )
36
+ r .attempt(htlcId3, 10000 msat, 0 )
37
+ assert(r .getConfidence(10000 msat, 0 ) === (1.0 / 5 ) +- 0.001 )
38
+ r .record(htlcId2, isSuccess = true )
39
+ r .record(htlcId3, isSuccess = true )
40
+ r .attempt(htlcId4, 1 msat, 0 )
41
+ assert(r .getConfidence(1 msat, 0 ) === 1.0 +- 0.001 )
42
+ r .attempt(htlcId5, 40000 msat, 0 )
43
+ assert(r .getConfidence(40000 msat, 0 ) === (3.0 / 11 ) +- 0.001 )
44
+ r .attempt(htlcId6, 10000 msat, 0 )
45
+ assert(r .getConfidence(10000 msat, 0 ) === (3.0 / 13 ) +- 0.001 )
46
+ r .record(htlcId6, isSuccess = false )
47
+ assert(r .getConfidence(10000 msat, 0 ) === (3.0 / 13 ) +- 0.001 )
48
48
}
49
49
50
50
test(" long HTLC" ) {
51
- val r0 = Reputation .init(Config (enabled = true , 1000 day, 1 second, 10 ))
52
- assert(r0 .getConfidence(100000 msat, TimestampMilli (0 )) == 0 )
53
- val r1 = r0 .attempt(htlcId1, 100000 msat, TimestampMilli (0 ))
54
- val r2 = r1 .record(htlcId1, isSuccess = true , now = TimestampMilli (0 ))
55
- assert(r2 .getConfidence(1000 msat, TimestampMilli (0 )) === (10.0 / 11 ) +- 0.001 )
56
- val r3 = r2 .attempt(htlcId2, 1000 msat, TimestampMilli (0 ))
57
- val r4 = r3 .record(htlcId2, isSuccess = false , now = TimestampMilli (0 ) + 100 .seconds)
58
- assert(r4 .getConfidence(0 msat, now = TimestampMilli (0 ) + 100 .seconds) === 0.5 +- 0.001 )
51
+ val r = Reputation .init(Config (enabled = true , 1000 day, 1 second, 10 ))
52
+ assert(r .getConfidence(100000 msat, 0 , TimestampMilli (0 )) == 0 )
53
+ r .attempt(htlcId1, 100000 msat, 0 , TimestampMilli (0 ))
54
+ r .record(htlcId1, isSuccess = true , now = TimestampMilli (0 ))
55
+ assert(r .getConfidence(1000 msat, 0 , TimestampMilli (0 )) === (10.0 / 11 ) +- 0.001 )
56
+ r .attempt(htlcId2, 1000 msat, 0 , TimestampMilli (0 ))
57
+ r .record(htlcId2, isSuccess = false , now = TimestampMilli (0 ) + 100 .seconds)
58
+ assert(r .getConfidence(0 msat, 0 , now = TimestampMilli (0 ) + 100 .seconds) === 0.5 +- 0.001 )
59
59
}
60
60
61
61
test(" exponential decay" ) {
62
- val r0 = Reputation .init(Config (enabled = true , 100 seconds, 1 second, 1 ))
63
- val r1 = r0 .attempt(htlcId1, 1000 msat, TimestampMilli (0 ))
64
- val r2 = r1 .record(htlcId1, isSuccess = true , now = TimestampMilli (0 ))
65
- assert(r2 .getConfidence(1000 msat, TimestampMilli (0 )) == 1.0 / 2 )
66
- val r3 = r2 .attempt(htlcId2, 1000 msat, TimestampMilli (0 ))
67
- val r4 = r3 .record(htlcId2, isSuccess = true , now = TimestampMilli (0 ))
68
- assert(r4 .getConfidence(1000 msat, TimestampMilli (0 )) == 2.0 / 3 )
69
- val r5 = r4 .attempt(htlcId3, 1000 msat, TimestampMilli (0 ))
70
- val r6 = r5 .record(htlcId3, isSuccess = true , now = TimestampMilli (0 ))
71
- assert(r6 .getConfidence(1000 msat, TimestampMilli (0 ) + 100 .seconds) == 1.5 / 2.5 )
72
- assert(r6 .getConfidence(1000 msat, TimestampMilli (0 ) + 1 .hour) < 0.000001 )
62
+ val r = Reputation .init(Config (enabled = true , 100 seconds, 1 second, 1 ))
63
+ r .attempt(htlcId1, 1000 msat, 0 , TimestampMilli (0 ))
64
+ r .record(htlcId1, isSuccess = true , now = TimestampMilli (0 ))
65
+ assert(r .getConfidence(1000 msat, 0 , TimestampMilli (0 )) == 1.0 / 2 )
66
+ r .attempt(htlcId2, 1000 msat, 0 , TimestampMilli (0 ))
67
+ r .record(htlcId2, isSuccess = true , now = TimestampMilli (0 ))
68
+ assert(r .getConfidence(1000 msat, 0 , TimestampMilli (0 )) == 2.0 / 3 )
69
+ r .attempt(htlcId3, 1000 msat, 0 , TimestampMilli (0 ))
70
+ r .record(htlcId3, isSuccess = true , now = TimestampMilli (0 ))
71
+ assert(r .getConfidence(1000 msat, 0 , TimestampMilli (0 ) + 100 .seconds) == 1.5 / 2.5 )
72
+ assert(r .getConfidence(1000 msat, 0 , TimestampMilli (0 ) + 1 .hour) < 0.000001 )
73
73
}
74
74
}
0 commit comments