signing with purpose via :for option

There're many `options` everywhere :sweat_smile: But it seems hard to avoid them..

But I have some questions, so I hope to get some of your help :smiley:  @jeremy .I'll comment on the code
I think there's another way to implement this: provide a default purpose, for example `default` to avoid this judgement. Do you like the default idea?