Missing Payouts Because Node Is in a "Sanctioned Country"?

There is no difference. A goelocation database tells you if an IP is sanctioned or not.

Edit: Maybe ignore the geo location part of it and understand it more as an database of IP addresses. It sounds like your concern is that all IPs in a certain location would have always the same additional flags. That is not the case. It is primarily a database. You can lookup any IP and the database returns not only the geo location it also returns a bunch of other information.

1 Like

That’s exactly what I meant.
Use a narrower sanctions list (it could be a special database field) rather than IP geolocation.

Thats what we do. It is called geo location database

My concern is that the site description does not explicitly mention any sanctions data.

According to the description, geolocation does not refer to the NAME of the database, but to the category of DATA it provides:

GeoIP® - the industry standard for IP geolocation

Yea I understand that. It is a database. There are even some funny IP addresses where the geolocation is different from the country code. For example an embassy or similar buildings. The database uses the IP address as primary key. It is called geolocation database because that is what most people use it for but it can be used for a lot more. You could go and query all embassies if you want :smiley:

Ситуация конечно интересная, сперва они отказываются платить операторам из России но при этом используют их ресурсы, потом они поговаривают что вообще не будут работать с операторами из России ссылаясь на санкции и т.д. а потом они точно так деанонимизируют(передадут третьим лицам) данные которые хранят обычные пользователи =)

Such comments aren’t helpful. We are looking into the reported issue. Nobody is trying to use a few nodes for free to save a few dollars.

The company has to follow sanctions regulations. These can change at any time. That may be disapointing to node operators in sanctioned countries, but it isn’t something Storj Labs has any control over.

5 Likes

Hey friends -

There has been a lot of discussion in this thread and a lot of it has been speculation. Here are some facts:

  • As a US company, it is illegal for us to pay or interact with storage nodes in sanctioned areas. These include North Korea, Iran, and more recently, Donbas and Crimea regions.
  • We determine if a node is in a sanctioned area by GeoIP lookup.
  • IPs have two country codes associated with them, the country of location, and the country of registration. Either type of association with a sanctioned country causes the IP to be considered sanctioned.
  • The IPs associated with @Andrew’s nodes (thanks for sending those to @Knowledge) are located in Russia (not sanctioned) but registered to Iran (sanctioned). Indeed, the nodes stopped receiving payouts when their IP changed to these Iranian-registered IPs.

Getting IPs not associated with a sanctioned region will fix this and should restore payouts and activity in future months.

Thanks!

9 Likes

is there some opened IP list where we can check, are those are sanctioned?

We get an updated database from https://www.maxmind.com/ every month considering this sort of data changes regularly.

Here is our code, as it currently stands:

// IsCountrySanctioned returns true if the country (by alpha-2 or alpha-3 country
// code) is sanctioned for purposes of best-effort conformance to the Office of
// Foreign Assets Code.
func IsCountrySanctioned(country string) bool {
        switch country {
        default:
                return false
        case "CU", "CUB": // Cuba
        case "IR", "IRN": // Iran
        case "KP", "PRK": // North Korea
        case "SD", "SDN": // Sudan
        case "SY", "SYR": // Syria
        }
        return true
}

and

// IsGeonameIDSanctioned returns true if the uint64 geonames.org id is sanctioned
// for purposes of best-effort conformance to the Office of Foreign Assets Code.
// It is assumed that IsGeonameIDSanctioned is only called after considering
// IsCountrySanctioned, as IsGeonameIDSanctioned does not currently include
// sanctioned countries.
func IsGeonameIDSanctioned(geonameID uint64) bool {
        switch geonameID {
        default:
                return false
        case 703883, // https://www.geonames.org/703883/autonomous-republic-of-crimea.html
                694422, // https://www.geonames.org/694422/sebastopol-city.html
                709716, // https://www.geonames.org/709716/donetska-oblast.html
                702657: // https://www.geonames.org/702657/luhanska-oblast.html
        }
        return true
}
7 Likes

I am not sure what “Iranian-registered, but located in Russia” IP means. How is it possible to be registered in one country and be located in another?

Are you sure it is not a bug or some mistake?
This is what I get when trying to check one of my problematic IPs:


I can’t see any info about other countries except Russia.

OFAC isn’t just blocking countries: they also track people, organizations, and large assets (like ships). An Iranian company running ISP/VPS/VPN/hosting services in Russia may very well have a Russia-geolocated IP… but because of the company that controls it… US firms can’t deal with them.

I’m not saying that’s what happened here. But sanction targets aren’t just defined by lines on a map.

1 Like

I think I found how to identify the “original owner” of an IP address. I searched for information about my IP at Webupdates — RIPE Network Coordination Centre. In the result output, I clicked on the company name in the “mnt-by” field (“maintained by”). After that, in the next result output, I clicked on the “admin-c” field, and in the next result output was information about a person from Iran, including mail address, phone number, etc. So, I guess, one way or another, the IP has origins from Iran (maybe this IP range was rented by a Russian ISP).

4 Likes

LOL… That logic would never even be called - IT DEFAULTS to FALSE. Although it intimates meaning of an awareness that those ‘former’ specific regions of Ukraine have officially been placed under sanctions. It’s acknowledged in it’s very commentary. As only those regions have been added subsequentialy to the UMBRELLA of Russian sanctions; because they have been former existing sanctions (crimea) and since been annexed and claimed by Russia (further additional sanctions). If you actually put a case “RU”, “RUS” in the ISCountrySanctioned() function, as would be the case - or even more funny , Put Ukraine as a case of sanctioned country test (adding insult to injury), only those entries within the ISGeoname…() would be used to confirm a true status.
‘As it stands’ that code could only be useful as a special INCLUSION list to a sanction=yes by making that list absolutely massive. So effectively, every single second stage sanction test is just ignored: IsGeonameIDSanctioned(false) will be the default return value. It would be extremely rare to get any hits on that code.

For instance, you’d get a hit due to a Iranian company (a known provider to Russia domestic & militarily), which owns a block of IPs operating in (or determined to be) Crimea, Donbass, etc. In all actuality all hundred of SNOs should be griping, but aren’t because that entire list is totally ineffective.

And that’s my best efforts to inform you, but I could be going insane. :smiley: One cannot be complicent or uniformed when there’s boolean, black and white logic right in front of you. Or it’s a stance, and I’m fine with that, these are people - regardless. Like the exhibited blog above, posted prior to official sanctions. I’m OK with either, nevertheless.

You are wrong, and conspiracy theories have nothing to do with it. There is a DB of IPs, and if it says that this IP is under sanctions, then Storj is obliged to block transactions by law. There is nothing that can be done here.
In the current situation, as far as we know, sanctions similar to those issued to Iran have not yet been issued to Russia (see the link above to the OFAC website). So far, there are only individual organizations and people there.
With IP, everything is much simpler, some ISPs were too lazy to change the registration when they purchased IPs and could easily get IPs that were registered in a sanctioned country (the same Iran is the most popular option, because they don’t really need IPs now, they are almost not allowed anywhere and are blocked almost everywhere). We had a case when an IP from the Netherlands was registered in Iran.
So just check your IP in geo DB, which will show not only the organization, but also in which country the address is registered and in which it is used.

на-русском

Вы ошибаетесь, и теории заговора тут ни причём. Есть БД IPs, и если там сказано, что этот IP под санкциями, то Storj обязан блокировать транзакции по закону. Тут ничего нельзя сделать.
По текущей ситуации, насколько известно, санкции подобные выданным Ирану, России пока не выдавались (см. ссылку выше на сайт OFAC). Там пока только отдельные организации и люди.
С IP всё значительно проще, некоторые ISP когда приобретали IP поленились сменить регистрацию и могли запросто получить IP, которые были зарегистрированы в санкционной стране (тот же Иран самый популярный вариант, потому что им IP теперь не сильно нужны, их почти никуда не пускают и почти везде блокируют). У нас был случай, когда IP из Нидерландов был зарегистрирован в Иране.
Так что просто проверьте ваш IP по geo DB, которая покажет не только организацию, но и в какой стране адрес зарегистрирован и в какой используется.

See my post above, and the posted code… Spells that out for you.
Bounce that IP - out of your country - because now you know, the codes tells you to. And Storj can not act any differently. All Russian’s should - after all it is the internet; I believe ~70% already did.

Could you please check in the following months, has it distributed or not. This should be visible in the Payout information for a previous period. But it would be updated only after the next payout cycle will be done (roughly after September 15).

This logic is indeed effective. Go’s implementation of switch statements is different than other languages.

Try running this: https://go.dev/play/p/1vA_2t1rQ3N

4 Likes

Yes, that’s entirely true, that code executes exactly per your example - because you specifically queried a geo listed item within that subroutine - it will only ever answer true for those 4 regions - for EVERY other query it will answer false: it’s not in one of those for sanctioned regions. Leaving the end result to ALLOW any COUNTRY, and only prevent those specific geo regions. So you’re letting Iranians, North Koreans, etc (all the countries you’re calling to further test) have full access - unrestricted. How’s everyone feel about that? It’s only effective for those 4 regions… which are and were (in the case of Crimea) added supplementary to the original sanctions on Russia itself. Give that code any other geo region to look up, it will respond FALSE. Therefore wiping out the entire concept of certifying/verifying anything but those 4 regions.

OR even worse, that PUBLIC website is often down - AND if it is, your code WILL IGNORE even those regions; therefore, EVERYTHING IS FAIR GAME - EVERY country.

The Case system does not work any differently.
Really… contact your CEO & counsel, this is some very serious oversight - Cuba, Iran, North Korea, Sudan, Syria… WTHeck?!

4 cents

It’s not online request, it’s synced to the local databsase, so requests always goes against the recent copy.